【问题标题】:getAdapter().notifyDataSetChanged() not changing database for recyclerviewgetAdapter().notifyDataSetChanged() 不为 recyclerview 更改数据库
【发布时间】:2019-04-08 04:33:16
【问题描述】:

我有 2 个按钮。单击按钮时,我决定为 recyclerview 选择哪个数据库。例如在按钮 B1 的单击上,我将数据库 DB1 设置为 recyclerview。我正在使用 firebaserecycleradapter。 问题是,recyclerview 的 getAdapter().notifyDataSetChanged() 似乎不适用于 FirebaseRecyclerAdapter 定义,但适用于 populateviewholder。但是由于我在 FirebaseRecyclerAdapter 定义上设置了查询,所以最后要选择的数据库不会在单击按钮时发生变化。

这里有一些代码:

//global declaration
  FirebaseRecyclerAdapter<HomeBlog, BlogViewHolder> firebaseRecyclerAdapter;

//FirebaseRecyclerAdapter part:


             firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<HomeBlog, BlogViewHolder>(

                    HomeBlog.class,
                    R.layout.profile_row,
                    BlogViewHolder.class,
                    query

//the query is the Firebase database that I want at a time.
//since getAdapter().notifyDataSetChanged() not reloading from here. query remains same.

            )
            {
                @Override
                protected void populateViewHolder(BlogViewHolder viewHolder, HomeBlog model, int position) {


                    final String post_key = getRef(position).getKey();

                    final String postPosition = String.valueOf(position);

//getAdapter().notifyDataSetChanged() seems to load in populateviewholder though.
//this I checked using Toast.



                    viewHolder.setImage(post_key);

                    viewHolder.mView.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {

                            //other code


                        }
                    });

                }
            };

            mBlogList.setAdapter(firebaseRecyclerAdapter);




//one button click example:
 grid.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                //changing the query

                query = mDatabase.orderByChild("UserId").equalTo(userId);
                mBlogList.setAdapter(firebaseRecyclerAdapter);
                mBlogList.getAdapter().notifyDataSetChanged();

            }
        });

我想确保在调用 getAdapter().notifyDataSetChanged() 时也加载 firebaserecycleradapter 定义部分。因为它包含查询。 有没有办法做到这一点?还是我在做一个完全错误的过程?

【问题讨论】:

    标签: android firebase android-recyclerview


    【解决方案1】:

    调用setAdapter() 后,您可以在该适配器上使用notifyDataSetChanged()。示例:

    mBlogList.setAdapter(firebaseRecyclerAdapter);
    firebaseRecyclerAdapter.notifyDataSetChanged();
    

    然后您的数据将被更新。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-04
    相关资源
    最近更新 更多