如何将Listview项目保存为文本文件

时间:2014-10-27 05:47:34

标签: android file listitem

我有一个ListView的SQLite位置数据,即:纬度,经度和位置地址。我想通过单击列表项将特定项目保存到文件。我该怎么做?请给我一个与此相关的示例,或者请解释我该如何做到这一点。

String latS;
String lonS;
String locS;
ListView list;

private ArrayList<String> kId = new ArrayList<String>();
private ArrayList<String> t_latitude = new ArrayList<String>();
private ArrayList<String> t_longitude = new ArrayList<String>();
private ArrayList<String> t_location=new ArrayList<String>();



list.setOnItemClickListener(new OnItemClickListener()
{

    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int position,
                long arg3)
    {
        latS=t_latitude.get(position).toString();
        lonS=t_longitude.get(position).toString();
        locS=t_location.get(position).toString();

        Intent mIntent=new    Intent(android.content.Intent.ACTION_VIEW,Uri.parse("http://maps.google.com/maps?  saddr="+Latitude+", "+Longitude+"&daddr=" +latS+", "+lonS));      <<<<<<******* I have getting the values over here..*******>>>>>>
    }
});

@Override
public boolean onContextItemSelected(MenuItem item)
{

    final AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();

    if(item.getTitle()=="Save")
     {  
         try
         {
             File file=new File("/sdcard/data.txt");
             file.createNewFile();
             FileOutputStream fOut = new FileOutputStream(file);
             OutputStreamWriter out=new OutputStreamWriter(fOut);

             out.append("Location: "+locS+"\n");
             out.append("Latitude: "+latS+"\n");
             out.append("Longitude: "+lonS+"\n");


             out.close();
             fOut.close();
             Toast.makeText(getBaseContext(),"file saved",Toast.LENGTH_SHORT).show();
          } 

          catch (Exception e)
          {
             // TODO Auto-generated catch block
             e.printStackTrace();
          }
     }   

2 个答案:

答案 0 :(得分:1)

首先,您需要在字符串中获取数据。

String latitude, longitude, address;

这些将保存您的列表视图项目的数据。

使用这些String中的数据,构建一个String:

StringBuilder locationStrBuilder = new StringBuilder();
locationStrBuilder.append("Latitude: "+latitude);
locationStrBuilder.append("\nLongitude: "+longitude);
locationStrBuilder.append("\nLocation: "+location);

String locationStr = locationStrBuilder.toString();

在清单中添加写入SD卡的权限。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

现在要将数据保存在文本文件中,您需要执行以下操作:

try {
    File locationFile = new File("/sdcard/locationfile.txt");
    locationFile.createNewFile();
    FileOutputStream fOut = new FileOutputStream(locationFile);
    OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut);
    myOutWriter.append(locationStr);
    myOutWriter.close();
    fOut.close();
    Toast.makeText(getBaseContext(),
                "location saved",
                Toast.LENGTH_SHORT).show();
} catch (Exception e) {
    Toast.makeText(getBaseContext(), e.getMessage(),
                Toast.LENGTH_SHORT).show();
}

希望这有帮助。

答案 1 :(得分:0)

无论如何,您总是可以创建一个包含所需属性的JSON对象,并使用JSONObject.toString()来获取文本并使用OutputStream将其写入您想要的任何位置。到文件或任何其他地方。