我正在创建一个自定义适配器,我使用两个视图持有者,如果列表位于0位置,持有者对象将被转换为第一个视图持有者,否则为第二个。问题是当我在onBindViewHolder之外使用第一个视图持有者对象时,它会抛出空指针异常。这是我的代码
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
if (position == 0) {
firstholder = (FirstHolder) holder;
} else {
secondholder = (SecondHolder) holder;
}
}
public void runnable(final int size) {
handler = new Handler();
runnable = new Runnable() {
@Override
public void run() {
if (firstholder.ViewPager.getCurrentItem() == size - 1) {
firstholder.ViewPager.setCurrentItem(0);
} else {
firstholder.ViewPager.setCurrentItem(firstholder.ViewPager.getCurrentItem() + 1, true); }
handler.removeCallbacks(Runnable);
handler.postDelayed(Runnable, 1000);
}
}
};
}
在runnable中调用时抛出异常。 请注意:两个视图对象都是全局的
答案 0 :(得分:1)
尝试使用此
final int itemType = getItemViewType(position);
if (itemType == 0) {
firstholder = (FirstHolder) holder;
}else {
secondholder = (SecondHolder) holder;
}