Java 如何存储和检索列表<;MyClass>;使用RxPreferences的对象
我正在使用GsonPreferenceAdapter,如库所示 我的片段类代码:Java 如何存储和检索列表<;MyClass>;使用RxPreferences的对象,java,android,sharedpreferences,rx-android,Java,Android,Sharedpreferences,Rx Android,我正在使用GsonPreferenceAdapter,如库所示 我的片段类代码: @Inject RxSharedPreferences sharedPreferences; @Inject Gson gson; List<MyClass> my_class_list; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState
@Inject RxSharedPreferences sharedPreferences;
@Inject Gson gson;
List<MyClass> my_class_list;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Binding and Inject go here.
Class listType = new TypeToken<ArrayList<MyClass>>(){}.getClass();
GsonPreferenceAdapter<List<MyClass>> adapter = new GsonPreferenceAdapter<>(gson, listType, new ArrayList<MyClass>(), GsonPreferenceAdapter.SyntaxExceptionBehavior.NULL);
my_class_list = sharedPreferences.getObject("pref_myclass", new ArrayList<>(), adapter).get();
if(my_class_list == null)
Timber.i("Tis null.");
Timber.i("Printing MyClass items...");
for(MyClass item: my_class_list)
Timber.i("MyClass: " + item);
}
@OnClick(R.id.add)
public void add() {
MyClass entry = new MyClass("Count Dracula", "12345");
my_class_list.add(entry);
Class listType = new TypeToken<List<MyClass>>(){}.getClass();
GsonPreferenceAdapter<List<MyClass>> adapter = new GsonPreferenceAdapter<>(gson, listType, new ArrayList<MyClass>(), GsonPreferenceAdapter.SyntaxExceptionBehavior.NULL);
sharedPreferences.getObject("pref_myclass", new ArrayList<>(), adapter).set(my_class_list);
Timber.i("Data Saved");
return false;
}
它还打印出Tis null,所以我很惊讶null是如何添加的。这是怎么回事,怎么解决
MyClass的内容:
public class MyClass {
@SerializedName("name")
@Expose
public String name;
@SerializedName("number")
@Expose
public String number;
public MyClass(String name, String number) {
this.name = name;
this.number = number;
}
@Override
public String toString() {
return "MyClass{" +
"name='" + name + '\'' +
", number='" + number + '\'' +
'}';
}
}
没关系,我自己想出来的。如果其他人遇到同样的问题,我会给出答案。问题出在GsonPreferenceAdapter上,我把它撕掉了。我把班级改成打字班,一切都很顺利
Type type = new TypeToken<List<MyClass>>(){}.getType();
GsonPreferenceAdapter<List< MyClass >> adapter = new GsonPreferenceAdapter<>(gson, type, new ArrayList<>(), GsonPreferenceAdapter.SyntaxExceptionBehavior.NULL);
my_class_list = sharedPreferences.getObject("pref_myclass", new ArrayList<>(), adapter).get();
Type Type=new-TypeToken(){}.getType();
GsonPreferenceAdapter>adapter=new-GsonPreferenceAdapter(gson,type,new-ArrayList(),GsonPreferenceAdapter.SyntaxExceptionBehavior.NULL);
my_class_list=SharedReferences.getObject(“pref_myclass”,new ArrayList(),adapter).get();
Type type = new TypeToken<List<MyClass>>(){}.getType();
GsonPreferenceAdapter<List< MyClass >> adapter = new GsonPreferenceAdapter<>(gson, type, new ArrayList<>(), GsonPreferenceAdapter.SyntaxExceptionBehavior.NULL);
my_class_list = sharedPreferences.getObject("pref_myclass", new ArrayList<>(), adapter).get();