Recyclerview适配器与CursorAdapter

14 浏览
0 Comments

Recyclerview适配器与CursorAdapter

我正尝试使用CursorAdapter实现一个RecyclerView的适配器,如下所示,这是在这里的一个解决方案中建议的方法。\n我是Android的新手,我不太清楚我应该如何重写CursorAdapter的newView方法和bindView方法。另外,我猜测我的适配器将有多个变量在ViewHolder中,而不是一个(View v1),因为我的布局文件中有几个textViews,但我不知道它们如何在代码中适配。\n

public class MyRecyclerAdapter extends Adapter

0
0 Comments

问题的原因是作者想在RecyclerView的适配器中使用CursorAdapter来获取数据库中的数据,但是遇到了问题。

解决方法是使用ORM(对象关系映射)库来处理数据库操作,例如使用SugarORM。通过使用ORM库,可以更简单地处理数据库操作,而不需要使用CursorAdapter。

以下是解决方法的代码示例:

public class RecyclerViewAdapter extends RecyclerView.Adapter {
    class ViewHolder extends RecyclerView.ViewHolder {
        TextView textView1;
        TextView textView2;
        public ViewHolder(View itemView) {
            super(itemView);
            textView1 = (TextView) itemView.findViewById(R.id.textView1);
            textView2 = (TextView) itemView.findViewById(R.id.textView2);
        }
        public void insertView(String result1, String result2) {
            textView1.setText(result1);
            textView2.setText(result2);
        }
    }
    private List results;
    public RecyclerViewAdapter(List results) {
        this.results = results;
    }
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_name, parent, false);
        RecyclerView.ViewHolder viewHolder = new ViewHolder(itemView);
        return viewHolder;
    }
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        ((ViewHolder) holder).insertView(results.get(position).getResult1(), results.get(position).getResult2());
    }
    public int getItemCount() {
        return results.size();
    }
}

通过使用ORM库,可以在获取数据库信息后将其传递给适配器的构造函数,从而解决了使用CursorAdapter的问题。

文章的完整内容如上所示。

0
0 Comments

RecyclerView Adapter和CursorAdapter的问题出现的原因是RecyclerView.Adapter不支持直接使用Cursor对象作为数据源,需要使用CursorAdapter来实现。解决方法是将CursorAdapter作为RecyclerView Adapter的成员变量,并在适当的位置调用CursorAdapter的方法。

具体解决方法如下:

1. 将CursorAdapter作为RecyclerView Adapter的成员变量:

private CursorAdapter mCursorAdapter;

2. 在RecyclerView Adapter的构造函数中初始化CursorAdapter:

mCursorAdapter = new CursorAdapter(mContext, c, 0) {...}

3. 在RecyclerView Adapter的getItemCount()方法中返回CursorAdapter的数据源数量:

return mCursorAdapter.getCount();

4. 在RecyclerView Adapter的onBindViewHolder()方法中调用CursorAdapter的bindView()方法绑定数据:

mCursorAdapter.getCursor().moveToPosition(position);
mCursorAdapter.bindView(holder.itemView, mContext, mCursorAdapter.getCursor());

5. 在RecyclerView Adapter的onCreateViewHolder()方法中调用CursorAdapter的newView()方法创建ViewHolder:

View v = mCursorAdapter.newView(mContext, mCursorAdapter.getCursor(), parent);

通过以上操作,我们成功将CursorAdapter作为RecyclerView Adapter的数据源,并实现了数据的绑定和显示。

希望以上解决方法对您有帮助。如果有其他问题,请随时提问。

0