以下代码存在问题,list_RowData.clear()调用后,list_Data中已经存入的数据也被清空。
List<ArrayList> list_Data = new ArrayList<ArrayList>();
ArrayList list_RowData = new ArrayList<>();
if(cursor_selectedTable.moveToFirst())
{
do{
for (int i = 2; i<cursor_selectedTable.getColumnCount();i++)
{
list_RowData.add(cursor_selectedTable.getString(i));
}
list_Data.add(list_RowData);
list_RowData.clear();
}while (cursor_selectedTable.moveToNext());
}
这说明list_Data.add(list_RowData);只是引用了list_RowData的地址,将其修改为:
list_Data.add(new ArrayList(list_RowData));
就可解决问题。