【问题标题】:RecyclerView.ViewHolder goes null outside onBindViewHolder methodRecyclerView.ViewHolder 在 onBindViewHolder 方法之外变为 null
【发布时间】:2017-01-04 12:26:05
【问题描述】:

我正在创建一个自定义适配器,我正在使用两个视图持有者,如果列表位于位置 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对象都是全局的

【问题讨论】:

  • 你能发布堆栈跟踪吗?哪一行正在抛出 NullPointer?还要发布适配器其余部分的代码,特别是 onCreateViewHoldergetItemViewType 方法
  • 在我通过 firstholder 调用 viewpager 的运行方法中
  • "Runnable = new Runnable()"? ,你应该有一些变量“Runnable runs=new Runnable()”
  • 我认为他的意思是:firstholder.ViewPager.getCurrentItem()
  • 是的@Leonardo,顺便说一句,她不是他:P

标签: android android-recyclerview


【解决方案1】:

尝试使用这个

final int itemType = getItemViewType(position);

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-10
    • 1970-01-01
    • 1970-01-01
    • 2012-12-27
    • 1970-01-01
    • 2019-01-19
    相关资源
    最近更新 更多