@suda911

Как правльно использовать RecyclerView.Adapter в Android Studio?

Хочу использовать RecycleView в своём приложении. Читал популярные мануалы и сделал практически точную копию в своём приложении, но всё равно не работает. Данные берутся из Cursor в БД. Из курсора я перегоняю их в свой List items=new ArrayList<>(); Но при запуске всё равно пишет ошибку . Вот листинг адаптера и главного окна
public class RVAdapter extends RecyclerView.Adapter<RVAdapter.PersonViewHolder> {


    List<MyItem> items;
    RVAdapter(List<MyItem> items){
        this.items = items;
    }

    @Override
    public PersonViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
        View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.cardview, viewGroup, false);
        PersonViewHolder pvh = new PersonViewHolder(v);
        return pvh;
    }

    @Override
    public void onBindViewHolder(RVAdapter.PersonViewHolder personViewHolder, int i) {
        personViewHolder.personName.setText(items.get(i).name);
        personViewHolder.personAge.setText(items.get(i).cell);
    }

    @Override
    public int getItemCount() {
        return items.size();
    }

        public static class PersonViewHolder extends RecyclerView.ViewHolder {
            CardView cv;
            TextView personName;
            TextView personAge;
            PersonViewHolder(View itemView) {
                super(itemView);
                cv = (CardView)itemView.findViewById(R.id.cv);
                personName = (TextView)itemView.findViewById(R.id.person_name);
                personAge = (TextView)itemView.findViewById(R.id.person_cell);
            }
        }

    @Override
    public void onAttachedToRecyclerView(RecyclerView recyclerView) {
        super.onAttachedToRecyclerView(recyclerView);
    }
}


Это с главной
List<MyItem> items=new ArrayList<>();

        final Cursor cursor = mSqLiteDatabase.query("Kroliki", null, null, null, null, null, null ) ;
        if(cursor.moveToFirst()){
            do{
                String name = cursor.getString(cursor.getColumnIndex(DBHelper.IDENT));
                int cell = cursor.getInt(cursor.getColumnIndex(DBHelper.Cell));
                items.add(new MyItem(name, cell));
            }while (cursor.moveToNext());
        }
        cursor.close();

        RecyclerView rv = (RecyclerView)findViewById(R.id.rv);
        rv.setHasFixedSize(true);
        LinearLayoutManager llm = new LinearLayoutManager(this);
        rv.setLayoutManager(llm);


        RVAdapter adapter = new RVAdapter(items);
        rv.setAdapter(adapter);

Не могу понять. Вроде данные есть . но всё равно ошибку выкидывает.
  • Вопрос задан
  • 1435 просмотров
Решения вопроса 1
@razer89
Android-разработчик
Замените строку
personViewHolder.personAge.setText(items.get(i).cell);

на строку:
personViewHolder.personAge.setText(String.valueOf(items.get(i).cell));
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы