【问题标题】:Update RecyclerView adapter after SharedPrefereces changedSharedPrefereces 更改后更新 RecyclerView 适配器
【发布时间】:2016-04-14 17:17:52
【问题描述】:

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

RecyclerView 的每一行使用 CardFlipAnimation(AnimatorSet)“打开”(当用户点击它时)。

在每一行中都有一个按钮可以更改 SharedPreferences 中的 int 值,而 TextView 则显示该值。

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

NotifyDataSetChanged 等更新 RecyclerView 中的数据很好,但问题是它们关闭打开的行(因为标准是关闭然后用 AnimatorSet 打开)

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

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

感谢解答

【问题讨论】:

    标签: sharedpreferences android-recyclerview observers android-sharedpreferences


    【解决方案1】:

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

    首先:我将我的 RecyclerView 传递给 Adapter

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

    第二个:在我的Adapter中创建一个方法:

        public void updateViews() {
    
            for(int i =0;i<getItemCount();i++){
    
                HeaderViewHolder holder = (HeaderViewHolder)recyclerView.findViewHolderForAdapterPosition(i);
                if(holder!=null){
    
                 //Update views at holders
                }
    
            }
    
    }
    

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

    附:我不确定这是更新视图的正确方法,但它有效,如果您知道另一个好的解决方案,请发布它

    【讨论】:

      猜你喜欢
      • 2020-10-23
      • 1970-01-01
      • 2018-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-30
      • 2018-07-26
      相关资源
      最近更新 更多