2014-01-08 41 views
0

我试图将项目添加到一个ArrayList则列表导出为CSV上的SD卡文件,这里是一个代码示例:的Android - 添加项目到一个ArrayList,然后导出为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

这意味着你要加入错误的数据类型。您正在尝试向包含字符串数组(String [])的ArrayList添加一个字符串。 – dymmeh

回答

0

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

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

1),该方法“mArrayList.add()”需要一个String [因为它的说法。 2)您试图将字符串传递给.add()方法,而不是String []。

因此,您需要检查并确保您的方法正在返回您期望的参数,如果它们是那么您需要修改您的添加代码来解决此问题。

基本上你做了什么:

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

这个函数调用创建的String [] s的名单。

在此呼吁:

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

您explictely从DB获得一个字符串,然后尝试把一个字符串到您的字符串[的]列表。

快速解决有关此是做:

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>(); 
+0

当我更改为列表 mArrayList = new ArrayList ();我的作者与“CSVWriter类型中的方法writeAll(列表)不适用于参数(列表)”。 –

+0

您是否写过作家,还是已有的课程?如果你写了它,你可以修改它以接受字符串,或者你可以使用mArrayList.add(new String [] {HdwOrderCursor.getString(HdwOrderCursor.getColumnIndex(HDWDBHelper.KEY_ITEMNUM))})来调用,这会调用你的字符串返回串[]的。这个问题真的是你是否需要字符串数组的一个问题。 –

+0

我无法在网上找到hdrCursor等对象来做进一步的研究。 –

0

Cursor#getString返回String,而不是String[]数组。要么你必须使你的ArrayList持有String对象(List<String> mArrayList = new ArrayList<String>)或包裹光标的结果数组:

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