我正在创建一个自定义适配器,如果列表在位置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中调用时抛出的异常。
注意:这两个viewholder对象都是全局的

最佳答案

尝试使用这个

final int itemType = getItemViewType(position);

if (itemType == 0) {
firstholder = (FirstHolder) holder;
}else {
secondholder = (SecondHolder) holder;
}

08-16 21:57