相关疑难解决方法(0)

Recyclerview不会调用onCreateViewHolder

RecyclerView不打电话onCreateViewHolder,onBindViewHolder即使是MenuViewHolder构造函数,因此没有出现RecyclerView.我把日志用于调试,没有显示日志.可能是什么问题?

我的适配器:

public class MenuAdapter extends RecyclerView.Adapter<MenuAdapter.MenuViewHolder> {
private LayoutInflater inflater;
List<Menu> data = Collections.emptyList();

public MenuAdapter(Context context, List<Menu> data) {
    Log.i("DEBUG", "Constructor");
    inflater = LayoutInflater.from(context);
    Log.i("DEBUG MENU - CONSTRUCTOR", inflater.toString());
    this.data = data;
    for(Menu menu: this.data){
        Log.i("DEBUG MENU - CONSTRUCTOR", menu.menu);
    }
}

@Override
public MenuViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = inflater.inflate(R.layout.row_menu, parent, false);
    MenuViewHolder holder = new MenuViewHolder(view);
    return holder;
}

@Override
public void onBindViewHolder(MenuViewHolder …
Run Code Online (Sandbox Code Playgroud)

java android android-recyclerview

135
推荐指数
9
解决办法
7万
查看次数

Android:RecyclerView.Adapter无法正常工作

我的问题id直接与@Richard有关,在RecyclerView.Adapter中关于onBindViewHolder()方法的问题没有被调用,因为他(和我)期望它这样做.

我注意到这个方法被正确调用,直到我的数据集结束(9个CardViews,向下滚动),但是当我尝试返回(向上滚动)时,它不再被调用.真正的问题是,在那里我在数据集中进行了更改并调用了notifyDataSetChanged(),但是由于这种奇怪的(对我来说)行为,我的修改不应该发生.

我附上的图片想要澄清:

  • 我到达Rec.View的底部(cardView - 仰望:一切都很好);
  • 处理卡片已经完全或部分显示没有问题(仰卧,Gerund和Participle);
  • 但是当我到达第一个完全被遮挡的cardView时,onBindViewHolder()不再被调用了,我可以从调试中看到链接到适配器的数据集是"Supine",并且这里是:显示了Supine cardView.

从RecyclerView的底部向上滚动 - 对不起质量问题

我认为这是理查德在他的问题中遇到的完全相同的问题,我尝试了他完全相同的解决方案:我在我的Adapter的构造函数中强制setHasStableIds()为true,

public CardAdapter(List<Object> items){
    this.items = items;
    adapterList = new ArrayList<String>();
    formAdapt = new ConjFormAdapter(adapterList);
    itemMap = new HashMap<Object, Long>();
    setHasStableIds(true);
}
Run Code Online (Sandbox Code Playgroud)

其中itemMap是我在我的活动中实现的Map,用于设置我的数据集的唯一ID,

并以这种方式覆盖getItemId():

public long getItemId(int position) {
    Object item = items.get(position);
    return itemMap.get(item);
}
Run Code Online (Sandbox Code Playgroud)

但是你可以从图片中看到我仍然得到这个结果:好吗?

编辑

我的活动中itemMap的实现:

for(int i=0, j=0; i<conj_items.size(); i++, j++)
            conjAdapter.getItemMap().put(conj_items.get(i), (long) j);
Run Code Online (Sandbox Code Playgroud)

其中conj_items是我传递给适配器的ArrayList.

android android-viewholder android-cardview recycler-adapter android-recyclerview

4
推荐指数
1
解决办法
1万
查看次数