我有一个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)