2015-09-20 65 views
1

我目前正在開發一個android應用程序,該應用程序用來自本地數據庫的數據提供我的內容活動。我正在使用本地數據庫使用RecycleView and Cardview將光標實施到recyclerview適配器

我已經實現了recycleview適配器,但是當使用return問題時,我的光標適配器到回收視圖適配器失敗。我認爲我沒有做正確的事情。我到目前爲止所嘗試的是以下。

下面的代碼是假設從數據庫處理程序中設置數據,

public class Items extends Activity{ 

static Context context; 
private String name; 
    public void setName(String name){ 
    this.name=name; 
    } 
    public String getName(){ 
    return name; 
    } 
    private static DatabaseHandler db = new DatabaseHandler(context); 

     public static Items fromCursor(Cursor cursor) { 
      ArrayList<String> users; 
       users = new ArrayList<String>(); 
       users = db.AllItems(); 
       return users; 
     } 

}

另外綁定視圖保持器類,這是在recyleview

public void onBindViewHolder(ViewHolder viewHolder, Cursor cursor) { 
    Items myListItem = Items.fromCursor(cursor); 
    viewHolder.mTextView.setText(myListItem.getName()); 

} 

最後,從數據庫處理程序獲取所有項目

public ArrayList<String> AllItems() { 
     ArrayList<String> user = new ArrayList<String>(); 

     // Select All Query 
     String selectQuery = "SELECT * FROM " + TABLE_LOGIN; 

     SQLiteDatabase db = this.getReadableDatabase(); 
     Cursor c = db.rawQuery(selectQuery, null); 

     // looping through all rows and adding to list 
     if (c.moveToFirst()) { 
      do { 
       String firstName = c.getString(c.getColumnIndex(KEY_FIRSTNAME)); 

       user.add("" + firstName); 
      } while (c.moveToNext()); 
     } 
     return user; 
    } 

我發現很難通過Items類實現光標或數據到onBindViewHolder方法。如果有人能幫我修復它,我將不勝感激。我非常感謝。

+0

我不知道你爲什麼加載'Cursor'結果到'AllItems'爲什麼'onBindViewHolder()'試圖使用遊標這兩件事。 FWIW,這裏是一個示例應用程序,演示如何使用'Cursor'作爲'RecyclerView'的數據模型,其中'Cursor'來自'MediaStore':https://github.com/commonsguy/cw -omnibus /樹/主/ RecyclerView/VideoList – CommonsWare

回答

1

有一個更清晰的方式來實現帶有RecyclerView的光標。

創建YourAdapter擴展CursorRecyclerAdapter - 你將擁有所有RecyclerView.Adapter功能一起swapCursor()changeCursor()Cursor參數的構造函數。

如果您確實需要自定義實現,您可以使用上面的類來開始。

爲了更好的方式來獲得我建議在看我如何Run a Query with a CursorLoader