SharedPrefereces 更改后更新 RecyclerView 适配器
Update RecyclerView adapter after SharedPrefereces changed
我有 RecyclerView
和自定义 RecyclerView
适配器。
RecyclerView
"opens" 的每一行(当用户点击它时)使用 CardFlipAnimation(AnimatorSet
).
在每一行中都有一个按钮可以更改 SharedPreferences
中的 int 值,而 TextView
则显示该值。
如果我打开了不止一行,我需要动态更改所有打开的行中的所有 TextViews
。
NotifyDataSetChanged
等更新 RecyclerView
中的数据很好,但问题是它们关闭打开的行(因为对于标准,thay 关闭然后用 AnimatorSet
打开)
我现在的主要任务是了解如何在所有打开的行中只更新一个 TextView
并保持它们打开(不要触摸 AnimatorSet
)。
我想我可以使用 Observer
,但我不知道如何正确地实现他。
如果你有什么想法请帮助我。
感谢您的回答
好吧,我终于找到了解决方案,它有点难看,但它完全符合我的需要。
首先:我将我的 RecyclerView 传递给 Adapter
...
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。我不确定这是更新视图的正确方法,但如果您知道另一个好的解决方案,它会起作用,post 请
我有 RecyclerView
和自定义 RecyclerView
适配器。
RecyclerView
"opens" 的每一行(当用户点击它时)使用 CardFlipAnimation(AnimatorSet
).
在每一行中都有一个按钮可以更改 SharedPreferences
中的 int 值,而 TextView
则显示该值。
如果我打开了不止一行,我需要动态更改所有打开的行中的所有 TextViews
。
NotifyDataSetChanged
等更新 RecyclerView
中的数据很好,但问题是它们关闭打开的行(因为对于标准,thay 关闭然后用 AnimatorSet
打开)
我现在的主要任务是了解如何在所有打开的行中只更新一个 TextView
并保持它们打开(不要触摸 AnimatorSet
)。
我想我可以使用 Observer
,但我不知道如何正确地实现他。
如果你有什么想法请帮助我。
感谢您的回答
好吧,我终于找到了解决方案,它有点难看,但它完全符合我的需要。
首先:我将我的 RecyclerView 传递给 Adapter
...
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。我不确定这是更新视图的正确方法,但如果您知道另一个好的解决方案,它会起作用,post 请