i want to make a quiz admin app.may java code below
package com.example.quizzeradmin;
import android.app.Dialog;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.gms.tasks.Continuation;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import de.hdodenhof.circleimageview.CircleImageView;
public class CatagorisActivity extends AppCompatActivity {
FirebaseDatabase database= FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference();
private RecyclerView recyclerView;
private List<category_model> list;
private Dialog loadingDialog,categoryDialog;
/*
For access inside category dialog views
*/
private CircleImageView addImage;
private EditText categoryName;
private Button addBtn;
private Uri image;
private String downloadURL;
private category_adapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_catagoris);
/*
initial the loadingDialog
*/
loadingDialog = new Dialog(this);
loadingDialog.setContentView(R.layout.loading);
loadingDialog.getWindow().setBackgroundDrawable(getDrawable(R.drawable.roundded_cornors));
loadingDialog.getWindow().setLayout(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);
loadingDialog.setCancelable(false);
setCategoryDialog();
/*
For RecyclerView we need to a sample class and adapter and item list
*/
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setTitle("Categories");
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
recyclerView = findViewById(R.id.recyClerViewId);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
layoutManager.setOrientation(RecyclerView.VERTICAL);
recyclerView.setLayoutManager(layoutManager);
list = new ArrayList<>();
adapter = new category_adapter(list);
recyclerView.setAdapter(adapter);
loadingDialog.show();
myRef.child("categories").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()){
list.add(dataSnapshot1.getValue(category_model.class));
}
adapter.notifyDataSetChanged();
loadingDialog.dismiss();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(CatagorisActivity.this, databaseError.getMessage(), Toast.LENGTH_SHORT).show();
loadingDialog.dismiss();
finish();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu,menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if(item.getItemId() == R.id.add){
//show the dialog
categoryDialog.show();
}
return super.onOptionsItemSelected(item);
}
private void setCategoryDialog(){
categoryDialog = new Dialog(this);
categoryDialog.setContentView(R.layout.add_category_dialog);
categoryDialog.getWindow().setBackgroundDrawable(getDrawable(R.drawable.roundded_box));
categoryDialog.getWindow().setLayout(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);
categoryDialog.setCancelable(true);
addImage = categoryDialog.findViewById(R.id.image);
categoryName = categoryDialog.findViewById(R.id.categoryname);
addBtn = categoryDialog.findViewById(R.id.add);
addImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent galleryIntent = new Intent(Intent.ACTION_PICK,
MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(galleryIntent,101);
}
});
addBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(categoryName.getText().toString().isEmpty()){
categoryName.setError("Category Name Required !");
return;
}
if(image == null){
Toast.makeText(CatagorisActivity.this, "please select a image", Toast.LENGTH_SHORT).show();
return;
}
categoryDialog.dismiss();
//upload data
uploadData();
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 101){
if(resultCode == RESULT_OK){
image = data.getData();
addImage.setImageURI(image);
}
}
}
private void uploadData(){
loadingDialog.show();
StorageReference storageReference = FirebaseStorage.getInstance().getReference();
//getLastPathSegment() this method return image name
final StorageReference imageReference = storageReference.child("categories").child(image.getLastPathSegment());
UploadTask uploadTask= imageReference.putFile(image);
Task<Uri> urlTask = uploadTask.continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
@Override
public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
if (!task.isSuccessful()) {
throw task.getException();
}
// Continue with the task to get the download URL
return imageReference.getDownloadUrl().addOnCompleteListener(new OnCompleteListener<Uri>() {
@Override
public void onComplete(@NonNull Task<Uri> task) {
if(task.isSuccessful()){
downloadURL = task.getResult().toString();
uploadCategoryName();
}else {
loadingDialog.dismiss();
Toast.makeText(CatagorisActivity.this, "Correction needed", Toast.LENGTH_SHORT).show();
}
}
});
}
}).addOnCompleteListener(new OnCompleteListener<Uri>() {
@Override
public void onComplete(@NonNull Task<Uri> task) {
if (task.isSuccessful()) {
Uri downloadUri = task.getResult();
} else {
// Handle failures
Toast.makeText(CatagorisActivity.this, "Correction needed", Toast.LENGTH_SHORT).show();
loadingDialog.dismiss();
}
}
});
}
private void uploadCategoryName(){
//upload data into realtime database
Map<String,Object> map = new HashMap<>();
map.put("name",categoryName.getText().toString());
map.put("sets",0);
map.put("url",downloadURL);
FirebaseDatabase database = FirebaseDatabase.getInstance();
database.getReference().child("categories").child("category"+(list.size()+1)).setValue(map)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){
list.add(new category_model(categoryName.getText().toString(),0,downloadURL));
adapter.notifyDataSetChanged();
}else {
Toast.makeText(CatagorisActivity.this, "Dear Developer - Correction needed", Toast.LENGTH_SHORT).show();
}
loadingDialog.dismiss();
}
});
}
}
User contributions licensed under CC BY-SA 3.0