我有两个 Activity 。我想从 Note.java 获取 edittext 数据并将其放入 MainActivity.java 的 ListView 中。 但是我不能以列表格式来做。
Note.java
public class Note extends FragmentActivity implements
EditText editText,editText2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_note);
editText = (EditText)findViewById(R.id.editText);
SharedPreferences sharedPref = getSharedPreferences("note", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString("myKey", editText.getText().toString());
editor.commit();
}
MainActivity.java
public class MainActivity extends AppCompatActivity{
ListView listView;
List list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView) findViewById(R.id.listView);
SharedPreferences sharedPref = getSharedPreferences("note", Context.MODE_PRIVATE);
String baslik = sharedPref.getString("myKey",null);
list = new ArrayList<String>();
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,list);
list.add(baslik);
listView.setAdapter(arrayAdapter);
arrayAdapter.notifyDataSetChanged();
}
最佳答案
SharedPreferences
只能存储原始数据类型。您不能在 SharedPreferences
中存储引用类型。对于这种情况,我使用 Gson
库。
第 1 步:将列表转换为字符串
Gson g = new Gson();
String str = g.toJson(list);
第 2 步:将字符串存储在 SharedPreferences
要从 SharedPreferences
获取数据,您必须像这样反序列化您的字符串:
Gson g = new Gson();
Type type = new TypeToken<ArrayList<YourClass>>(){}.getType();
List<YourClass> clazz = g.fromJson(yourString,type);
关于java - 使用 sharedpreferences 保存一个数组列表并在 ListView 中显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57064179/