ANDROID - 如何将ListView中的所有项目保存在文本文件,TextView或类似文件中?

时间:2014-06-06 08:16:51

标签: android listview android-listview

我有一个" 动态列表视图"我通过点击另一个" 普通ListView "中的项目继续添加元素。

后来我有一个按钮,我需要在点击此按钮时保存所有ListView项目,因为稍后我必须在另一个活动中显示这些项目而我不知道如何我可以直接显示Listview。

  • ArrayString
  • 文本文件
  • 的TextView
  • 的EditText
  • 某处类似

我的问题

我怎么能这样做?

4 个答案:

答案 0 :(得分:0)

你可以这样做---

//your listview defined
final ListView listview = (ListView) findViewById(R.id.listview);

//your listview data, you may have your own data in adapter
String[] values = new String[] { "Android", "iPhone", "WindowsMobile",
"Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X",
"Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X", "Linux",
"OS/2", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2",
"Android", "iPhone", "WindowsMobile" };

//keep the data in arraylist and pass as Serializable
final ArrayList<String> list = new ArrayList<String>();

for (int i = 0; i < values.length; ++i) {
list.add(values[i]);
}


//onclick to pass to another activity
prev.setOnClickListener(new View.OnClickListener() {

    public void onClick(View v) {
            Intent intent = new Intent(Current.this, Next.class);
            intent.putExtra("data", new DataWrapper(list));
            startActivity(intent);  
        }
    });

包含数据arrayList的实现类 -

public class DataWrapper implements Serializable {

       private ArrayList<String> myData;

       public DataWrapper(ArrayList<String> data) {
          this.myData = data;
       }

       public ArrayList<String> getUserData() {
          return this.myData;
       }

    }

要在其他活动中检索

DataWrapper dw = (DataWrapper) getIntent().getSerializableExtra("data");
ArrayList<String> list = dw.getUserData();

答案 1 :(得分:0)

您可以将列表文件作为字符串保存在SharedPrefrences中,其中每个项目都用逗号分隔。

通过将列表保存到SharedPrefrences,您可以使用它,即使应用已关闭,因为您保存了它,然后在其他时间重新打开。 但如果你不想要这个 - 请使用@Ved Prakash提到的方式

以逗号分隔:

ArrayList<String> yourData =...

private void saveList(ArrayList<String> data)
{
String items = "";
for(String s : data)
items+= s+ ",";

SharedPreferences spf = getSharedPrefernces("myappname_data",Context.MODE_PRIVATE);
SharedPreferences.Editor editor = spf.edit();

editor.putString("listview_data",items);
editor.commit();
}

然后重新获取数据:

private ArrayList<String> getListData(){
SharedPreferences spf = getSharedPrefernces("myappname_data",Context.MODE_PRIVATE);
String raw_data = spf.getString("listview_data","");

String[] items = raw_data.split(",");

return Arrays.asList(items);
}

答案 2 :(得分:0)

如果它不是永久性的,您可以将String []或ArrayList传递给另一个Activity:

Intent intent = new Intent(this, MyActivity.class);
intent.putExtra("some_key", new String[] {});
intent.putStringArrayListExtra("some_another_key", new ArrayList<String>());
startActivity(intent);

答案 3 :(得分:0)

将所需的字符串值存储在SharedPreferences中,如下所示。

Concat字符串除以&#34;;&#34; :

String list = "str1;str2;str3";

然后......

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
Editor prefsEditor = prefs.edit();
prefsEditor.putString("YOURKEY", list);
prefsEditor.commit();

回复其他活动中的信息:

String list = prefs.getString("YOURKEY", "");
if(!list.equals(""))
   String[] listArray = list.split(";");