基于未更改的 SharedPreferences 键高效更新 RecyclerView 项目

问题描述 投票:0回答:1

问题:我有一个 Android 应用程序,我使用 SharedPreferences 存储数据,并且有一个 RecyclerView 根据 SharedPreferences 中的键显示项目。键保持不变,但与每个键关联的数据可以更改。当数据更改时,有效更新特定 RecyclerView 项而不更改键本身的最佳方法是什么?即使键保持不变,我是否应该使用notifyItemChanged?任何见解或代码示例将不胜感激。

我想知道notifyitemchanged的行为如何,它是否跟随数组的变化

java android mobile
1个回答
0
投票

所以只需显示列表,并订阅我将在下面发布的代码,每当项目发生更改时,通过

notifyItemChanged(position)
通知该项目,请记住,您应该通知所有项目,此代码将帮助您获得最新的共享偏好:

public class PreferenceFlow {
  private final SharedPreferences prefs;

  public PreferenceFlow(Context context, String name) {
    this.prefs = context.getSharedPreferences(name, Context.MODE_PRIVATE);
  }

  public Flow<String> getPreferenceFlow(String key, String defaultValue) {
    return Flow.create(emitter -> {
      String value = prefs.getString(key, defaultValue);
      emitter.emit(value); // Emit initial value

      SharedPreferences.OnSharedPreferenceChangeListener listener = (sharedPreferences, changedKey) -> {
        if (changedKey.equals(key)) {
          emitter.emit(sharedPreferences.getString(key, defaultValue));
        }
      };

      prefs.registerOnSharedPreferenceChangeListener(listener);

      emitter.setCancellationListener(() -> prefs.unregisterOnSharedPreferenceChangeListener(listener));
    });
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.