在SharedPrefereces更改后更新RecyclerView适配器

时间:2016-04-14 17:17:53

标签: sharedpreferences android-recyclerview observers android-sharedpreferences

我有RecyclerView个自定义RecyclerView适配器。

使用CardFlipAnimation(RecyclerView)打开每个AnimatorSet行(当用户点击它时)。

在每一行中都有一个按钮,用于更改SharedPreferences中的int值,以及显示此值的TextView

如果我打开了多行,我需要动态更改所有打开的行中的TextViews

NotifyDataSetChanged等更新了RecyclerView中的数据,但这是一个问题,他们关闭了已打开的行(因为标准已关闭,然后以AnimatorSet打开)

我现在的主要任务是了解如何在所有已打开的行中仅更新一个TextView并保持打开状态(不要触摸AnimatorSet)。 我想我可以使用Observer,但我不知道如何正确实现他。

如果您有任何想法,请帮助我。

感谢您的回答

1 个答案:

答案 0 :(得分:0)

好的,最后我得到了一个解决方案,它有点难看,但它完全符合我的需要。

首先:我将RecyclerView传递给适配器

        ...
        public CardBaseAdapter(RecyclerView recyclerView,...) {
        ...
        this.mRecyclerView = recyclerView;
        ....

第二次:在我的适配器中创建一个方法:

    public void updateViews() {

        for(int i =0;i<getItemCount();i++){

            HeaderViewHolder holder = (HeaderViewHolder)recyclerView.findViewHolderForAdapterPosition(i);
            if(holder!=null){

             //Update views at holders
            }

        }

}

第三次:当我需要更新视图时调用此函数

P.S。我不确定这是更新视图的正确方法,但是如果你知道另一个好的解决方案,它就可以了,请发布它