小编ber*_*r77的帖子

如何强制RecyclerView.Adapter在所有元素上调用onBindViewHolder()

我有一个VerticalGridView正在使用RecyclerView.Adapter填充元素。我发现onBindViewHolder()如果潜在元素不在视口中,则不会调用该方法。不幸的是,这是NullPointerException由另一种方法引起的,因为我TextView在该onBindViewHolder()方法中捕获了一个引用并将其传递给外部变量以供以后操作。

@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
    final ViewHolder viewHolder = (ViewHolder) holder;
    viewHolder.txtCategoryName.setText(categories.get(position).getStrCategory());
    categories.get(position).setTxtViewReference(viewHolder.txtCategoryDefectTotal);
    viewHolder.categoryBoxRoot.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            for(CategoryListItem catItem : categories){
                if(catItem.getStrCategory().equals(viewHolder.txtCategoryName.getText())){
                    int index = Defects.getInstance().getCategories().indexOf(catItem) + 1;
                    MainInterface.grids.get(index).bringToFront();
                    MainInterface.grids.get(index).setVisibility(View.VISIBLE);
                    for(VerticalGridView grid : MainInterface.grids){
                        int gridIndex = MainInterface.grids.indexOf(grid);
                        if(gridIndex != index){
                            grid.setVisibility(View.INVISIBLE);
                        }
                    }
                    break;
                }
            }

        }
    });
Run Code Online (Sandbox Code Playgroud)

据我了解,实例化对象TextView时会创建对gets 的引用Viewholder

public class ViewHolder extends …
Run Code Online (Sandbox Code Playgroud)

android textview recycler-adapter android-recyclerview

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