检查RecyclerView中的所有项目是否都具有相同的值(Google Firestore)

时间:2018-09-28 11:36:37

标签: java android android-recyclerview recycler-adapter

如果适配器上的所有项目都具有布尔值= true,我需要检查

然后根据结果,我必须更改floatActionButton颜色。 我不知道该怎么做。 这是我的适配器:

private FirebaseFirestore db = FirebaseFirestore.getInstance();
private CollectionReference basementReference = db.collection("basement");
private TableAdapter tableAdapter;





@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    FloatingActionButton basement = findViewById(R.id.button_basement);
    basement.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(MainActivity.this, MainActivity.class);
            startActivity(intent);
        }
    });

    setUpRecyclerView();
}
private void setUpRecyclerView(){
    final Query query = basementReference.orderBy("tableNumber",Query.Direction.ASCENDING);
    FirestoreRecyclerOptions<Table> options = new FirestoreRecyclerOptions.Builder<Table>()
            .setQuery(query, Table.class)
            .build();

    tableAdapter = new TableAdapter(options);
    RecyclerView recyclerView = findViewById(R.id.recycler_view);
    recyclerView.setHasFixedSize(true);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));
    recyclerView.setAdapter(tableAdapter);  tableAdapter.setOnItemClickListener(new TableAdapter.OnItemCLickListener() {
            @Override
            public void onItemClick(final DocumentSnapshot documentSnapshot, int position) {
                Table table = documentSnapshot.toObject(Table.class);

                if(table.isTableOccupied()){
                    basementReference.document(documentSnapshot.getId()).update("tableOccupied",false).addOnCompleteListener(new OnCompleteListener<Void>() {


                }else {
                    basementReference.document(documentSnapshot.getId()).update("tableOccupied",true).addOnCompleteListener(new OnCompleteListener<Void>() {


    }

@Override
protected void onStart() {
    super.onStart();
    tableAdapter.startListening();
}

请帮助。我认为我需要在我的适配器类中进行此操作,但是如果有其他解决方案,我将很乐意遵循:)

tableAdapter类: TableAdapter类扩展了FirestoreRecyclerAdapter {

public TableAdapter(@NonNull FirestoreRecyclerOptions<Table> options) {
    super(options);
}

private OnItemCLickListener onItemCLickListener;
private int occupiedMarker = 0;

@Override
protected void onBindViewHolder(@NonNull TableHolder holder, int position, @NonNull Table model) {
    holder.textViewTableNumber.setText(model.getTableNumber());
    holder.textViewTableSeats.setText(model.getTableSeats());
    holder.textViewTableOccupied.setText(String.valueOf(model.isTableOccupied()));
}

@NonNull
@Override
public TableHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.note_table,parent,false);
    return new TableHolder(v);
}

class TableHolder extends RecyclerView.ViewHolder{

    TextView textViewTableNumber;
    TextView textViewTableSeats;
    TextView textViewTableOccupied;

    public TableHolder(@NonNull View itemView) {
        super(itemView);
        textViewTableNumber = itemView.findViewById(R.id.text_view_table_number);
        textViewTableSeats = itemView.findViewById(R.id.text_view_table_seats);
        textViewTableOccupied = itemView.findViewById(R.id.text_view_table_occupied);

        itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                int position = getAdapterPosition();
                if (position != RecyclerView.NO_POSITION && onItemCLickListener!=null){
                    onItemCLickListener.onItemClick( getSnapshots().getSnapshot(position), position );
                }
            }
        });
    }
}
public interface OnItemCLickListener {
    void onItemClick(DocumentSnapshot documentSnapshot, int position);
}
public void setOnItemClickListener(OnItemCLickListener onItemClickListener){
    this.onItemCLickListener = onItemClickListener;
}

}

0 个答案:

没有答案