java - 使用 sharedpreferences 保存一个数组列表并在 ListView 中显示

标签 java android

我有两个 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/

相关文章:

java - CouchDB数据复制

java通知所有: illegalMonitorStateException

java - Android 中的 SimpleXML 反序列化错误

java - 安卓 ZipInputStream : only DEFLATED entries can have EXT descriptor

android - 我们是否负责重新加载新的 AdMob 横幅广告?

javascript - 为 JS 和 Java 编写代码

java - robots.txt 解析器 java

android - Android资源xml文件中的 "add-resource"有什么作用?

php - 如何通过android应用程序在mysql数据库中创建表?

java - 异常 java.lang.NumberFormatException : null in servlets