我已经尝试过多次使用在stackoverflow上找到的解决方案,但是即使我从控制台手动将其删除,我仍然会从firebase存储中删除项目。
我不想在我的应用程序上使用删除按钮,以允许用户删除上载的项目。当我从控制台删除项目时,myAdapter是否没有刷新?
package com.aiman;
import android.app.ProgressDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutCompat;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
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 java.util.ArrayList;
import java.util.List;
public class ShowImagesActivity extends AppCompatActivity {
//recyclerview object
private RecyclerView recyclerView; //adapter object
private RecyclerView.Adapter adapter; //database reference
private DatabaseReference mDatabase; //progress dialog
private ProgressDialog progressDialog; //list to hold all the uploaded images
private List<Upload> uploads;
//new empty constructor
public class ViewHolder extends RecyclerView.ViewHolder {
public ViewHolder(View itemView) {
super(itemView);
}
}
//empty constructor
public class SampleRecycler extends RecyclerView.Adapter<ViewHolder> {
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return null;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
}
@Override
public int getItemCount() {
return 0;
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show_images);
recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setHasFixedSize(true);
MyAdapter myAdapter = new MyAdapter(uploads);
recyclerView.setAdapter(myAdapter);
//recyclerView.setAdapter(adapter);
//adapter.notifyDataSetChanged();
recyclerView.setAdapter(new SampleRecycler()); //initialize empty constructor
progressDialog = new ProgressDialog(this);
uploads = new ArrayList<>();
//displaying progress dialog while fetching images
progressDialog.setMessage("Please wait...");
progressDialog.show();
mDatabase = FirebaseDatabase.getInstance().getReference(Constants.DATABASE_PATH_UPLOADS);
//adapter.notifyDataSetChanged();
//adding an event listener to fetch values
mDatabase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
//dismissing the progress dialog
progressDialog.dismiss();
//iterating through all the values in database
for (DataSnapshot postSnapshot : snapshot.getChildren()) {
Toast.makeText(getApplicationContext(),"Connected to database", Toast.LENGTH_SHORT).show();
Upload upload = postSnapshot.getValue(Upload.class);
uploads.add(upload);
//uploads.notify();
//uploads.removeAll(uploads);
}
//creating adapter
adapter = new MyAdapter(getApplicationContext(), uploads);
recyclerView.setAdapter(adapter);
}
@Override
public void onCancelled(DatabaseError databaseError) {
Toast.makeText(getApplicationContext(), databaseError.getMessage(), Toast.LENGTH_SHORT).show();
progressDialog.dismiss();
}
});
}
}
package com.aiman;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import java.util.List;
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private Context context;
private List<Upload> uploads;
class ViewHolder extends RecyclerView.ViewHolder {
public TextView textViewName;
public ImageView imageView;
public ViewHolder(View itemView) {
super(itemView);
textViewName = (TextView) itemView.findViewById(R.id.textViewName);
imageView = (ImageView) itemView.findViewById(R.id.imageView);
}
}
//empty adapter constructor
public MyAdapter(List<Upload> uploads){
}
public MyAdapter(Context context, List<Upload> uploads) {
this.uploads = uploads;
this.context = context;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.layout_images, parent, false);
//.inflate(R.layout.layout_images, null, false);
ViewHolder viewHolder = new ViewHolder(v);
return viewHolder;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
final ViewHolder viewHolder = (ViewHolder) holder;
//uploads.remove(position);
Upload upload = uploads.get(position);
holder.textViewName.setText(upload.getName());
Glide.with(context).load(upload.getUrl()).into(holder.imageView);
//uploads.remove(position);
}
@Override
public int getItemCount() {
return uploads.size();
}
}