Java 如何将共享首选项数据保存到ArrayList中,然后显示在ListView上?
我试图将密钥/值对数据从共享首选项复制到ArrayList,然后将其显示在ListView上,但在使用HashMap时,出现了以下错误“不兼容类型”:Java 如何将共享首选项数据保存到ArrayList中,然后显示在ListView上?,java,android,sharedpreferences,Java,Android,Sharedpreferences,我试图将密钥/值对数据从共享首选项复制到ArrayList,然后将其显示在ListView上,但在使用HashMap时,出现了以下错误“不兼容类型”: SharedPreferences sharedPref = getSharedPreferences("STData", Context.MODE_PRIVATE); //to edit the data or add data inside my file "STData" SharedPreferences.Editor editor =
SharedPreferences sharedPref = getSharedPreferences("STData", Context.MODE_PRIVATE);
//to edit the data or add data inside my file "STData"
SharedPreferences.Editor editor = sharedPref.edit();
//create an Arraylist to store values from the sharedPref Object
ArrayList<String> STArrayList = new ArrayList<String>();
for (HashMap<String, String> map : STArrayList)
for (Map.Entry<String, String> entry : map.entrySet())
{
editor.putString(entry.getKey(), entry.getValue());
editor.commit();
String savedPref = sharedPref.getString(entry.getKey(), "");
STArrayList.add(savedPref);
Toast.makeText(getApplicationContext(),savedPref, Toast.LENGTH_LONG).show();
}
SharedReferences SharedReferences=GetSharedReferences(“STData”,Context.MODE\u PRIVATE);
//编辑数据或在我的文件“STData”中添加数据
SharedPreferences.Editor=sharedPref.edit();
//创建Arraylist以存储来自sharedPref对象的值
ArrayList STArrayList=新的ArrayList();
for(HashMap映射:STArrayList)
对于(Map.Entry:Map.entrySet())
{
putString(entry.getKey(),entry.getValue());
commit();
String savedPref=sharedPref.getString(entry.getKey(),“”);
STArrayList.add(savedPref);
Toast.makeText(getApplicationContext(),savedPref,Toast.LENGTH_LONG).show();
}
尝试以下方法:
SharedPreferences sharedPref = getSharedPreferences("STData", Context.MODE_PRIVATE);
//to edit the data or add data inside my file "STData"
SharedPreferences.Editor editor = sharedPref.edit();
//create an Arraylist to store values from the sharedPref Object
ArrayList<String> STArrayList = new ArrayList<String>();
Map<String, String> map = (Map<String, String>) sharedPref.getAll();
for (Map.Entry<String, String> entry : map.entrySet()) {
editor.putString(entry.getKey(), entry.getValue());
editor.commit();
String savedPref = sharedPref.getString(entry.getKey(), "");
STArrayList.add(savedPref);
Toast.makeText(getApplicationContext(), savedPref, Toast.LENGTH_LONG).show();
}
SharedReferences SharedReferences=GetSharedReferences(“STData”,Context.MODE\u PRIVATE);
//编辑数据或在我的文件“STData”中添加数据
SharedPreferences.Editor=sharedPref.edit();
//创建Arraylist以存储来自sharedPref对象的值
ArrayList STArrayList=新的ArrayList();
Map Map=(Map)sharedPref.getAll();
对于(Map.Entry:Map.entrySet()){
putString(entry.getKey(),entry.getValue());
commit();
String savedPref=sharedPref.getString(entry.getKey(),“”);
STArrayList.add(savedPref);
Toast.makeText(getApplicationContext(),savedPref,Toast.LENGTH_LONG).show();
}
但我仍然不确定您想要实现什么-因为首先您从共享首选项中获取所有值,然后对其进行迭代,然后在该循环中再次将这些值放入共享首选项:
editor.putString(entry.getKey(),entry.getValue());
commit()代码>
我认为以上几行是没有必要的
最后一件事——当您有不同的内容时,您必须确保您在共享首选项中保留的所有值都是字符串,然后Map Map=(Map)sharedPref.getAll()代码>将抛出ClassCastException。尝试以下操作:
SharedPreferences sharedPref = getSharedPreferences("STData", Context.MODE_PRIVATE);
//to edit the data or add data inside my file "STData"
SharedPreferences.Editor editor = sharedPref.edit();
//create an Arraylist to store values from the sharedPref Object
ArrayList<String> STArrayList = new ArrayList<String>();
Map<String, String> map = (Map<String, String>) sharedPref.getAll();
for (Map.Entry<String, String> entry : map.entrySet()) {
editor.putString(entry.getKey(), entry.getValue());
editor.commit();
String savedPref = sharedPref.getString(entry.getKey(), "");
STArrayList.add(savedPref);
Toast.makeText(getApplicationContext(), savedPref, Toast.LENGTH_LONG).show();
}
SharedReferences SharedReferences=GetSharedReferences(“STData”,Context.MODE\u PRIVATE);
//编辑数据或在我的文件“STData”中添加数据
SharedPreferences.Editor=sharedPref.edit();
//创建Arraylist以存储来自sharedPref对象的值
ArrayList STArrayList=新的ArrayList();
Map Map=(Map)sharedPref.getAll();
对于(Map.Entry:Map.entrySet()){
putString(entry.getKey(),entry.getValue());
commit();
String savedPref=sharedPref.getString(entry.getKey(),“”);
STArrayList.add(savedPref);
Toast.makeText(getApplicationContext(),savedPref,Toast.LENGTH_LONG).show();
}
但我仍然不确定您想要实现什么-因为首先您从共享首选项中获取所有值,然后对其进行迭代,然后在该循环中再次将这些值放入共享首选项:
editor.putString(entry.getKey(),entry.getValue());
commit()代码>
我认为以上几行是没有必要的
最后一件事——当您有不同的内容时,您必须确保您在共享首选项中保留的所有值都是字符串,然后Map Map=(Map)sharedPref.getAll()
将抛出ClassCastException。您的ArrayList和HashMap具有相同的对象名STArrayList您正试图通过HashMap
中的HashMap
for(HashMap:STArrayList)
访问ArrayList
,这是错误的。我是Android新手,我应该如何解决这个问题?您定义STArrayList,然后在不添加任何内容的情况下尝试对其进行迭代。您还尝试为(HashMap:STArrayList)执行此操作,而且它们的类型不同。STArrayList
是一个ArrayList
,因此循环通过它将返回一个String
对象,而不是HashMap
您的ArrayList和HashMap具有相同的对象名STArrayList您正试图通过中的HashMap
访问ArrayList
(HashMap:STArrayList)
这是错误的。我是Android新手,我应该如何解决这个问题?您定义STArrayList,然后在不添加任何内容的情况下尝试对其进行迭代。您还尝试为(HashMap map:STArrayList)执行此操作,但它们的类型不同。STArrayList
是一个ArrayList
,因此循环通过它将返回一个String
对象,而不是HashMap