Я пытаюсь реализовать адаптер для Recyclerview
с использованием CusrorAdapter
, как показано в одном из решений here.Адаптер Recycliewiew с CursorAdapter
Я новичок в Android, и я не совсем понимаю, как я должен переопределить метод newView CursorAdapter
и метод bindView
. Также я предполагаю, что мой адаптер будет иметь несколько переменных в ViewHolder
вместо одного (View v1), поскольку в моем файле макета есть несколько textViews
, но я просто не знаю, как они все вписываются в код.
public class MyRecyclerAdapter extends Adapter<MyRecyclerAdapter.ViewHolder {
// PATCH: Because RecyclerView.Adapter in its current form doesn't natively support
// cursors, we "wrap" a CursorAdapter that will do all teh job for us
CursorAdapter mCursorAdapter;
Context mContext;
public MyRecyclerAdapter(Context context, Cursor c) {
mContext = context;
mCursorAdapter = new CursorAdapter(mContext, c, 0) {
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
// Inflate the view here
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
// Binding operations
}
};
}
public static class ViewHolder extends RecyclerView.ViewHolder{
View v1;
public ViewHolder(View itemView) {
super(itemView);
v1 = itemView.findViewById(R.id.v1);
}
}
@Override
public int getItemCount() {
return mCursorAdapter.getCount();
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
// Passing the binding operation to cursor loader
mCursorAdapter.bindView(holder.itemView, mContext, mCursorAdapter.getCursor());
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// Passing the inflater job to the cursor-adapter
View v = mCursorAdapter.newView(mContext, mCursorAdapter.getCursor(), parent);
return new ViewHolder(v);
}
}
Спасибо за ваш ответ, но, похоже, отсутствует 'CursorAdapter'. Причина, по которой я использую 'CursorAdapter' внутри адаптера, это то, что я получаю данные из БД. Я могу реализовать адаптер «RecyclerView» обычным способом, как ваш, но когда участвует «CursorAdapter», я начинаю испытывать проблемы. – Risa
Извините, я забыл эту часть. Почему бы вам не использовать ORM, например [SugarORM] (http://satyan.github.io/sugar/)? Это проще, чем CursorAdapter. –
См. Отредактированный ответ. –