如果firebase数据库中存储的每个项目的属性为真,我正在寻找一种方法来过滤我的recyclerview上的项目。我一直在寻找一种方法来做它的适配器,但找不到一个。
例如,如果我有30种水果,我只想展示新鲜的。
在我的代码中,如果可能的话,我还想为它来自的活动更改这个条件。比如,如果我来自用户,我只想得到新鲜水果项目,但如果我来自管理,我想得到腐烂的水果。
这是我的适配器
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();
}
});
}
}
1条答案
按热度按时间n9vozmp41#
如果您的json有一个要过滤的属性,通常最好在数据库查询中进行过滤。例如,如果
ReclamoFirebase
你有财产吗state
哪个是fresh
对于新鲜农产品,您可以使用以下方法进行过滤:在本例中,其余代码将保持不变。
有关这方面的更多信息,请参阅有关排序和筛选数据的firebase文档。