为了账号安全,请及时绑定邮箱和手机立即绑定

通过单击 Firebase 数据库中的按钮过滤 ListView

通过单击 Firebase 数据库中的按钮过滤 ListView

三国纷争 2022-07-06 18:52:24
我正在尝试从单击按钮时满足查询的 Firebase 获取数据(任务)。我可以获取所有数据(任务),但是当我单击按钮以获取过滤后的数据时,我没有收到预期的结果。我已将未过滤的适配器设置为在单击按钮时清除,并将过滤的适配器设置为没有结果。我接近做对了吗?数据库结构我的火力基地查询final Query statusQuery = FirebaseDatabase.getInstance().getReference().child("Store 01").child("Task List")            .orderByChild("Status")            .equalTo("Complete");获取过滤数据的代码final ArrayAdapter<String> filterAdapter = new ArrayAdapter<String>(this, R.layout.tasks_layout, R.id.textTask, listTask);    this.dbTasks.setAdapter(filterAdapter);    statusButton.setOnClickListener(new View.OnClickListener() {        @Override        public void onClick(View v) {           statusQuery.addValueEventListener(new ValueEventListener() {               @Override               public void onDataChange(@NonNull DataSnapshot dataSnapshot) {                   for (DataSnapshot ds : dataSnapshot.getChildren()) {                       //adding the key to an Arraylist to be referenced when deleting records                       filteredTasks.add(ds.getKey());                       String name = ds.child("Name").getValue(String.class);                       String date = ds.child("Date").getValue(String.class);                       String assigned = ds.child("Assigned to").getValue(String.class);                       String type = ds.child("Type").getValue(String.class);                       queryTask.add(name  + "\n" + date + "\n" + assigned + "\n" + type);                Log.d("TAG", name);                   }//for                   task_list.this.dbTasks.setAdapter(filterAdapter);                   arrayAdapter.clear();                   arrayAdapter.notifyDataSetChanged();               }//onDataChange               @Override               public void onCancelled(@NonNull DatabaseError databaseError) {               }//OnCancelled           });        }//OnClick    });
查看完整描述

1 回答

?
largeQ

TA贡献2039条经验 获得超7个赞

final ArrayAdapter<String> filterAdapter = new ArrayAdapter<String>(this, R.layout.tasks_layout, R.id.textTask, listTask);

this.dbTasks.setAdapter(filterAdapter);

新的数组适配器指向错误的arrayList“listTask”,我将它指向“queryTask”,这解决了问题。


filterAdapter = new ArrayAdapter<String>(this, R.layout.tasks_layout, R.id.textTask, queryTask);


查看完整回答
反对 回复 2022-07-06
  • 1 回答
  • 0 关注
  • 82 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信