简体   繁体   English

使用共享首选项保存一个数组列表并将其显示在列表视图中

[英]Save an arraylist with sharedpreferences and show it in listview

I have two activities.我有两个活动。 I want to get edittext data from Note.java and put it in listview from MainActivity.java.我想从 Note.java 获取 edittext 数据并将其放入 MainActivity.java 的列表视图中。 But I couldn't do it in list format.但我无法以列表格式进行。

Note.java笔记.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主活动.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 can store only primitive data types.you can not store References types in SharedPreferences .for this case I use Gson library. SharedPreferences只能存储原始数据类型。您不能在SharedPreferences存储 References 类型。对于这种情况,我使用Gson库。

Step 1 : Convert list to String第 1 步:将列表转换为字符串

Gson g = new Gson();
String str  = g.toJson(list);

Step 2 : Store String in SharedPreferences第 2 步:在SharedPreferences存储字符串

for getting data from SharedPreferences you must deserialize your String like this:要从SharedPreferences获取数据,您必须像这样反序列化您的字符串:

Gson g = new Gson();
Type type = new TypeToken<ArrayList<YourClass>>(){}.getType();
List<YourClass> clazz = g.fromJson(yourString,type);

Suppose you want to save and load List by Sharedprefernces:假设您想通过 Sharedprefernces 保存和加载 List:

public static final String NEWS = "news";
 private SharedPreferences mPreferences;

public void saveNews(List<ResponseNews> news) {
    mPreferences.edit().putString(NEWS, new Gson().toJson(news)).commit();
}

public List<ResponseNews> loadNews() {
    return new Gson().fromJson(mPreferences.getString(NEWS, ""), new TypeToken<List<ResponseNews>>() {
    }.getType());
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM