2015-09-20 2 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; 
    } 

Мне трудно реализовать курсор или данные в методе onBindViewHolder через класс Items. Буду признателен, если кто-то поможет мне исправить это. Я очень благодарен.

+0

Я не уверен, почему вы загружая 'Cursor' результаты в' AllItems' и почему 'onBindViewHolder()' пытается использовать обе вещи. FWIW, вот пример приложения, демонстрирующий использование «курсора» в качестве модели данных для «RecyclerView», где «Курсор» в этом случае происходит из «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

Смежные вопросы