Android - 将项添加到ArrayList然后导出为CSV

时间:2014-01-08 19:46:58

标签: java android csv arraylist

我正在尝试将项目添加到ArrayList,然后将列表导出到SDCARD上的CSV文件,这是一个代码示例:

try 
{

  String csv = "/sdcard/order.csv";
      CSVWriter writer = new CSVWriter(new FileWriter(csv));                                        
  HdwOrderCursor = HDWDBHelper.fetchAllOrders();
  startManagingCursor(HdwOrderCursor);
  List<String[]> mArrayList = new ArrayList<String[]>();
  HdwOrderCursor.moveToFirst();
  while(!HdwOrderCursor.isAfterLast()) {
                      mArrayList.add(HdwOrderCursor.getString(HdwOrderCursor.getColumnIndex(HDWDBHelper.KEY_ITEMNUM))); //add the item                      
                      HdwOrderCursor.moveToNext();                                               
  }

  writer.writeAll(mArrayList);  
  writer.close();        
} 

'mArrayList.add'有一个错误“类型List中的方法add(String [])不适用于参数(String)”,不知道这意味着什么。

2 个答案:

答案 0 :(得分:0)

  

&#39; mArrayList.add&#39;出现错误&#34;类型List中的方法add(String [])不适用于参数(String)&#34;,不确定这意味着什么。

这是一个非常明显的错误,它告诉你的是:

1)方法&#34; mArrayList.add()&#34;取一个String []作为它的参数。 2)您尝试将String传递给.add()方法,而不是String []。

因此,您需要检查并确保您的方法返回您期望的参数,如果是,则需要修改添加代码以解决此问题。

基本上你做了什么:

List<String[]> mArrayList = new ArrayList<String[]>();

此调用创建一个String [] s。

列表

在此电话会议中:

mArrayList.add(HdwOrderCursor.getString(HdwOrderCursor.getColumnIndex(HDWDBHelper.KEY_ITEMNUM))); //add the item

您明确地从数据库中获取STRING,然后尝试将String放入String []的列表中。

快速解决此问题的方法是:

 mArrayList.add(new String[] {HdwOrderCursor.getString(HdwOrderCursor.getColumnIndex(HDWDBHelper.KEY_ITEMNUM))}); //add the item

但是,我实际上并不认为你想要一个String []列表,所以更好的选择是改变:

List<String[]> mArrayList = new ArrayList<String[]>();

为:

List<String> mArrayList = new ArrayList<String>();

答案 1 :(得分:0)

Cursor#getString会返回String,而不是String[]数组。您必须使您的ArrayList保持String个对象(List<String> mArrayList = new ArrayList<String>)或将光标的结果包装在一个数组中:

`mArrayList.add(new String[] {HdwOrderCursor.getString(HdwOrderCursor.getColumnIndex(HDWDBHelper.KEY_ITEMNUM))});