2017-07-18 60 views
1

我正在使用add()將數據追加到我的ArrayList,但我相信我的光標的邏輯正在使我試圖追加的數據實際經歷並替換掉我所有的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; 
} 

的方法,這裏是從我的片段類的代碼顯示這是工作的罰款

ArrayList dbDate = dbHandler.databaseToStringDate(); 

    String dbDateString = dbDate.toString(); 

    date.setText(dbDateString); 
+0

你能更具體一點嗎?你的ArrayList包含什麼?你認爲它應該包含什麼? –

+0

我想顯示用戶執行特定任務時的日期,但所有事件的日期都是最後一個日期。例如我有「2017-07-18」在一個TextView中,如果用戶確實說了行動tommarow我想要「2017-07-18,2017-07-19」。但是我得到了「2017-07-19,2017-07-19」。 –

+0

您的表格是否有包含日期​​值的列? –

回答

0

在你的代碼的開頭的TextView ,您將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(); 
} 

沒有額外的列查找,你只是添加相同StringArrayList一遍又一遍。

相關問題