【发布时间】:2021-06-14 13:56:56
【问题描述】:
我正在尝试将我的对象数组传递给 JSON,但是当我这样做时,应用程序崩溃并且日志中没有任何消息。 下面我放了代码,我是一个新手,这肯定是一个愚蠢的错误。提前致谢。
public class Modelo implements Serializable {
@SerializedName("nombre")
private String nombre;
@SerializedName("edad")
private CheckBox edad;
@SerializedName("image")
private int image;
@SerializedName("txt")
private TextView txt;
public TextView getTxt() {
return txt;
}
public void setTxt(TextView txt) {
this.txt = txt;
}
public Modelo() {
}
public Modelo(String nombre, CheckBox edad, int image) {
this.nombre = nombre;
this.edad = edad;
this.image = image;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public CheckBox getEdad() {
return edad;
}
public void setEdad(CheckBox edad) {
this.edad = edad;
}
public int getImage() {
return image;
}
public void setImage(int image) {
this.image = image;
}
}
这里将对象数组传递给 JSON 和另一个检索它的方法。
public <T> void setList(String key, List<Modelo> list) {
Gson gson = new Gson();
String json = gson.toJson(list);
set(key, json);
}
public void set(String key, String value) {
SharedPreferences sharedPreferences =getApplicationContext().getSharedPreferences("list", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(key, value);
editor.commit();
}
public List<Modelo> getList(){
SharedPreferences sharedPreferences =getApplicationContext().getSharedPreferences("list", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
List<Modelo> arrayItems=new ArrayList<>();
String serializedObject = sharedPreferences.getString("key", null);
if (serializedObject != null) {
Gson gson = new Gson();
Type type = new TypeToken<List<Modelo>>(){}.getType();
arrayItems = gson.fromJson(serializedObject, type);
}
return arrayItems;
}
这是我调用方法的部分,也是它让我崩溃的部分。如果有必要我把整个代码都放了,我不想让你觉得无聊。
mAdapter = new ListAdapter(this, R.layout.item_row, mLista);
List<Modelo> mLista=new ArrayList<>();
myListView.setAdapter(mAdapter);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setList("key",mLista);
}
});
【问题讨论】: