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

我正在尝试从单击按钮时满足查询的 Firebase 获取数据(任务)。我可以获取所有数据(任务),但是当我单击按钮以获取过滤后的数据时,我没有收到预期的结果。

我已将未过滤的适配器设置为在单击按钮时清除,并将过滤的适配器设置为没有结果。

我接近做对了吗?

数据库结构

http://img4.mukewang.com/62c5698c0001bf3e06530751.jpg

我的火力基地查询


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

    });


三国纷争
浏览 83回答 1
1回答

largeQ

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);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java