【发布时间】:2020-12-19 15:32:21
【问题描述】:
如果为 firebase 数据库中的每个项目存储的属性为真,我正在寻找一种方法来过滤我的 recyclerview 上的项目。我一直在寻找一种在适配器上执行此操作的方法,但找不到。
例如,如果我有 30 个水果,我希望只显示新鲜的。
如果可能的话,深入了解我的代码,id 还希望根据它来自的活动更改此条件。比如我来自用户,我喜欢只得到新鲜水果,但如果我来自管理员,我喜欢得到腐烂的水果。
这是我的适配器
public class MisReclamoFirebaseAdapter extends RecyclerView.Adapter<MisReclamoFirebaseAdapter.MyViewHolder> {
Context context;
ArrayList<ReclamoFirebase> reclamos;
public MisReclamoFirebaseAdapter(Context c , ArrayList<ReclamoFirebase> p)
{
context = c;
reclamos = p;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new MyViewHolder(LayoutInflater.from(context).inflate(R.layout.reclamo_item,parent,false));
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
holder.descripcion.setText(reclamos.get(position).getDescripcion());
holder.depto.setText(reclamos.get(position).getDept());
holder.prodserv.setText(reclamos.get(position).getProducto());
Picasso.get().load(reclamos.get(position).getFoto()).into(holder.fotoRec);
}
@Override
public int getItemCount() {
return reclamos.size();
}
class MyViewHolder extends RecyclerView.ViewHolder
{
TextView depto, descripcion, prodserv;
ImageView fotoRec;
public MyViewHolder(View itemView) {
super(itemView);
depto = (TextView) itemView.findViewById(R.id.deptoRec);
descripcion = (TextView) itemView.findViewById(R.id.descripcionRec);
prodserv= (TextView) itemView.findViewById(R.id.prodservRec);
fotoRec = (ImageView) itemView.findViewById(R.id.fotoRec);
}
}
}
这就是类
public class HistorialReclamosActivity extends AppCompatActivity {
private MisReclamoFirebaseAdapter adapter;
DatabaseReference reference;
RecyclerView recyclerView;
ArrayList<ReclamoFirebase> list;
FirebaseDatabase database = FirebaseDatabase.getInstance();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_historial_reclamos_consumidor);
recyclerView = (RecyclerView) findViewById(R.id.recyclerViewMisReclamos);
recyclerView.setLayoutManager( new LinearLayoutManager(this));
reference = FirebaseDatabase.getInstance().getReference().child("Reclamos");
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
list = new ArrayList<ReclamoFirebase>();
for(DataSnapshot dataSnapshot1: dataSnapshot.getChildren())
{
ReclamoFirebase p = dataSnapshot1.getValue(ReclamoFirebase.class);
list.add(p);
}
adapter = new MisReclamoFirebaseAdapter(HistorialReclamosActivity.this,list);
recyclerView.setAdapter(adapter);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(HistorialReclamosActivity.this, "Algo salió mal", Toast.LENGTH_SHORT).show();
}
});
}
}
【问题讨论】:
标签: java android firebase-realtime-database android-recyclerview