【问题标题】:Filter the query and refresh the recycler view using firebase in android在android中使用firebase过滤查询并刷新recycler视图
【发布时间】:2017-08-23 22:07:15
【问题描述】:
@Override
protected void onStart() {
    super.onStart();

    mAuth.addAuthStateListener(mAuthListener);

    FirebaseRecyclerAdapter<Product, ProductViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Product, ProductViewHolder>(

            Product.class,
            R.layout.product_row,
            ProductViewHolder.class,
            mDatabase

    ) {
        @Override
        protected void populateViewHolder(ProductViewHolder viewHolder, Product model, int position) {

            Log.d(TAG, "loading view " + position);
            final String product_id = getRef(position).getKey();
            viewHolder.setTitle(model.getName());
            viewHolder.setDesc(model.getDesc());
            viewHolder.setImage(getApplicationContext(), model.getImage());
            viewHolder.setUsername(model.getUsername());

            viewHolder.mView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent productDetailIntent = new Intent();
                    productDetailIntent.setClass(MainActivity.this, ProductDetailActivity.class);
                    productDetailIntent.putExtra("product_id", product_id);
                    Log.d(TAG + " product_id", product_id);
                    startActivity(productDetailIntent);
                }
            });

            Log.d(TAG, "finish loading view");
        }
    };

    mProductList.setAdapter(firebaseRecyclerAdapter);
}

以上是我用来从 firebase 实时数据库中获取数据的代码。如何更改查询(我的代码中的 mDatabase)并刷新 recyclerview 以过滤数据?如何设置新的适配器?请给我一些帮助。谢谢。

【问题讨论】:

  • 您的意思是说您想在设置适配器后将新查询的结果加载到同一个 RecyclerView 中?
  • @DougStevenson 我有一个带有项目列表的 Firebase RV,当我在 RV 中使用“搜索”项目时,我需要过滤数据,有什么建议吗?

标签: android firebase firebase-realtime-database android-recyclerview android-adapter


【解决方案1】:

试试这个:

FirebaseRecyclerAdapter<Product, ProductViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Product, ProductViewHolder>(

        Product.class,
        R.layout.product_row,
        ProductViewHolder.class,
        mDatabase.orderByChild("KeyName").equalTo("Value") //add this line 
)
 mProductList.setAdapter(firebaseRecyclerAdapter);
  firebaseRecyclerAdapter.notifyDataSetChanged();  // also add this line

【讨论】:

  • 但是如果我的片段中有 recyclerview 并且我需要通过 mainactivity 使用搜索/过滤选项呢?
【解决方案2】:

在您的数据库中设置查询...

FirebaseRecyclerAdapter<Product, ProductViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Product, ProductViewHolder>(

            Product.class,
            R.layout.product_row,
            ProductViewHolder.class,
            mDatabase.orderByChild("KeyName").equalTo("Value")

    )

【讨论】:

  • 如果我已经创建了一个,如何将它放入 Recycler 视图并刷新它?
  • 您需要在适配器中设置...查看我更新的答案
  • 所以我需要再次设置 firebaseRecyclerAdapter 和 setAdapter。但是怎么刷新呢?
猜你喜欢
  • 2016-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-01
  • 1970-01-01
  • 2014-12-10
  • 1970-01-01
  • 2018-08-04
相关资源
最近更新 更多