问题:我有一个 Android 应用程序,我使用 SharedPreferences 存储数据,并且有一个 RecyclerView 根据 SharedPreferences 中的键显示项目。键保持不变,但与每个键关联的数据可以更改。当数据更改时,有效更新特定 RecyclerView 项而不更改键本身的最佳方法是什么?即使键保持不变,我是否应该使用notifyItemChanged?任何见解或代码示例将不胜感激。
我想知道notifyitemchanged的行为如何,它是否跟随数组的变化
所以只需显示列表,并订阅我将在下面发布的代码,每当项目发生更改时,通过
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));
});
}
}