2016-09-16 63 views
0

我想根據其「狀態」用2個不同的數據組填充2個不同的ListView。我目前的代碼運行時沒有錯誤,但我的ListView沒有被填充。我有多個完整或不完整狀態的測試數據。Android - 如何檢索一個WHERE條件的數據庫行?

Java代碼:

public class view_to_do_task extends AppCompatActivity { 
    private dbasemanager2 dBase2; 
    private ListView taskList; 
    private ListView taskList2; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.view_to_do_task); 

     dBase2 = new dbasemanager2(this); 
     dBase2.openReadable(); 
     taskList = (ListView)findViewById(R.id.incompleteTaskList); 
     ArrayList<String> dBaseContent = dBase2.retrieveIncompleteRows(); 
     ArrayAdapter<String> arrayAdpt = new ArrayAdapter<>(this, 
       android.R.layout.simple_list_item_1, dBaseContent); 
     taskList.setAdapter(arrayAdpt); 

     taskList2 = (ListView)findViewById(R.id.completeTaskList); 
     dBaseContent = dBase2.retrieveCompleteRows(); 
     arrayAdpt = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, dBaseContent); 
     taskList.setAdapter(arrayAdpt); 

} 

找回功能:

public ArrayList<String> retrieveIncompleteRows() { 
    ArrayList<String> studentRows = new ArrayList<>(); 
    String[] columns = new String[] {"tid", "task", "status"}; 
    String s = "Incomplete"; 
    Cursor cursor = db.query(DB_TABLE, columns, "status=?", new String[] { s }, null, null, null); 
    cursor.moveToFirst(); 
    while (!cursor.isAfterLast()) { 
     studentRows.add(cursor.getString(0) + ". " + cursor.getString(1)); 
     cursor.moveToNext(); 
    } 
    if (cursor != null && !cursor.isClosed()) { 
     cursor.close(); 
    } 
    return studentRows; 
} 

public ArrayList<String> retrieveCompleteRows() { 
    ArrayList<String> studentRows = new ArrayList<>(); 
    String[] columns = new String[] {"tid", "task", "status"}; 
    String s = "Complete"; 
    Cursor cursor = db.query(DB_TABLE, columns, "status=?", new String[] { s }, null, null, null); 
    cursor.moveToFirst(); 
    while (!cursor.isAfterLast()) { 
     studentRows.add(cursor.getString(0) + ". " + cursor.getString(1)); 
     cursor.moveToNext(); 
    } 
    if (cursor != null && !cursor.isClosed()) { 
     cursor.close(); 
    } 
    return studentRows; 
} 

回答

1

有獨立string list兩個ListViews.

創建獨立的Adapters我創建了se流言蜚語字符串列表和適配器下面

ArrayList<String> dBaseContent = dBase2.retrieveIncompleteRows(); 
    ArrayAdapter<String> arrayAdpt = new ArrayAdapter<>(this, 
      android.R.layout.simple_list_item_1, dBaseContent); 
    taskList.setAdapter(arrayAdpt); 

    ArrayList<String> dBaseContentComplete = dBase2.retrieveCompleteRows(); 
    ArrayAdapter<String> arrayAdptComplete = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, dBaseContentComplete); 
    taskList2.setAdapter(arrayAdptComplete); 

Where條件

public ArrayList<String> retrieveIncompleteRows() { 

    ArrayList<String> studentRows = new ArrayList<>(); 
    String[] columns = new String[] {"tid", "task", "status"}; 
    String s = "Incomplete"; 

    //make changes here... and similarly while getting complete records other funtion. 
    Cursor cursor = db.query(DB_TABLE, columns, 
      "status = '"+ s + "'", null, null, null, null); 

    cursor.moveToFirst(); 
    while (!cursor.isAfterLast()) { 
     studentRows.add(cursor.getString(0) + ". " + cursor.getString(1)); 
     cursor.moveToNext(); 
    } 
    if (cursor != null && !cursor.isClosed()) { 
     cursor.close(); 
    } 
    return studentRows; 
} 
+0

我現在認爲它的罰款。 –

0

你爲什麼不能有一個功能,而不是兩個帶參數?

public ArrayList<String> retrieveCompleteRows(String s) { 
    ArrayList<String> studentRows = new ArrayList<>(); 
    String[] columns = new String[] {"tid", "task", "status"}; 
    Cursor cursor = db.query(DB_TABLE, columns, "status=?", new String[] { s}, null, null, null); 
cursor.moveToFirst(); 
while (!cursor.isAfterLast()) { 
    studentRows.add(cursor.getString(0) + ". " + cursor.getString(1)); 
    cursor.moveToNext(); 
} 
if (cursor != null && !cursor.isClosed()) { 
    cursor.close(); 
} 
return studentRows; 
} 

你也可以使用一個CursorLoader,而不是這個,因爲這是異步

0

試試這個

public ArrayList<String> retrieveIncompleteRows() { 
    ArrayList<String> studentRows = new ArrayList<>(); 

    String s = "Incomplete"; 
    String selectQuery = "SELECT * FROM " + TABLE_NAME + " WHERE " + COLUMN_NAME + " = " + s + ""; 
    SQLiteDatabase db = this.getReadableDatabase(); 
    Cursor cursor = db.rawQuery(selectQuery, null); 
    if (cursor.moveToFirst()) { 
     do { 
      studentRows.add(cursor.getString(0) + ". " + cursor.getString(1)); 

     } while (cursor.moveToNext()); 
    } 
    return studentRows; 
} 
相關問題