我创建了2个活动。一个实现RecyclerView.Adapter并接收数据,另一个实现发送那些数据。这些数据的目的是在活动中的recyclerview内更改textView的文本。所以我使用了SharedPrefences,但是不知何故它不显示保存的值。 (甚至不是defValue)为什么不起作用?谢谢你的帮助。
RecyclerView代码:
public class MultiAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private SharedPreferences mSharedPreferences;
private SharedPreferences.Editor mEditor;
private Context context;
public MultiAdapter(List<myObject> Parts, Context
context) {
this.items = Parts;
this.context = context;}
public class ViewHolder extends RecyclerView.ViewHolder{
TextView segment;
private ViewHolder( View itemView, int position) {
super(itemView);
segment = itemView.findViewById(R.id.segment_field);
mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
mEditor = mSharedPreferences.edit();
String DAY1 = mSharedPreferences.getString("DayD1", "incomplete");
segment.setText("Day "+ DAY1);
}
}
发送数据活动代码:
public class Day1_Program extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
... }
(on click from button)
public void Done(View view){
SharedPreferences mPreferences =
PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor mEditor = mPreferences.edit();
mEditor.putString("DayD1", "complete");
mEditor.apply();
在Activity中没有调用SharedPrefs来接收数据,因为所有数据都应该在适配器本身中更改。但是输出是“ Day”,为什么?我不明白问题出在哪里。我想知道问题是否出在getDefaultSharedPreferences()中,因为在recyclerView中我使用了私有内容,而在活动中我使用了它。但是,如果我也想在recyclerView中使用它,那就是类型错误。
您在按钮上单击RecyclerView
之前先填充click
的数据,这就是为什么对SharedPreference
所做的更改不会反映在视图上的原因。尝试如下的刷新视图:
public void Done(View view){
SharedPreferences mPreferences =
PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor mEditor = mPreferences.edit();
mEditor.putString("DayD1", "complete");
mEditor.apply();
//Refresh your view by notifying adapter
multiAdapter.notifyDataSetChanged();
}