我正在使用 add() 将数据附加到我的 ArrayList,但我相信我的光标的逻辑正在使我尝试附加的数据实际上经过并替换我的所有 Arraylist 数据。
这是我的 DBHandler.java 中的方法
public ArrayList databaseToStringDate(){
String dateString = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
ArrayList<String> dateList = new ArrayList<>();
SQLiteDatabase db = getWritableDatabase();
String query = "SELECT * FROM " + KICK_TABLE + " WHERE 1";
//Cursor points to a location in your results
Cursor c = db.rawQuery(query, null);
//Move to the first row in your results
c.moveToFirst();
//Position after the last row means the end of the results
while (!c.isAfterLast()) {
if (c.getString(c.getColumnIndex("productname")) != null) {
dateList.add(dateString);
// dateString += "\n";
}
c.moveToNext();
}
db.close();
return dateList;
}
这是我的 fragment 类中的代码,它显示工作正常的 textView
ArrayList dbDate = dbHandler.databaseToStringDate();
String dbDateString = dbDate.toString();
date.setText( dbDateString);
最佳答案
在代码开头,将 dateString
定义为
String dateString = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
您从数据库中检索行,并为数据库中的每一行调用
dateList.add(dateString);
但是您从未重新分配dateString
来表示数据库中行中的日期。您需要从数据库中读出日期列并解析将那个 String
添加到您的ArrayList
中。例如:
while (!c.isAfterLast()) {
if (c.getString(c.getColumnIndex("productname")) != null) {
dateList.add(c.getString(c.getColumnIndex("date")));
}
c.moveToNext();
}
如果没有额外的列查找,您只需一遍又一遍地将相同的String
添加到ArrayList
中。
关于java - 不明白为什么我不能将数据追加到 ArrayList 的末尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45175231/