[英]Save an arraylist with sharedpreferences and show it in listview
我有兩個活動。 我想從 Note.java 獲取 edittext 數據並將其放入 MainActivity.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();
}
主活動.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
存儲 References 類型。對於這種情況,我使用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);
假設您想通過 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.