滚动后,Recyclerview项目位置为NOT_FOUND

时间:2019-11-01 12:58:57

标签: android android-recyclerview

所以我有一个垂直方向的父级recyclerview和一个水平方向的父级嵌套的子级recyclerview

Onclick功能与子recylerview一起使用

我创建了一个接口,该接口将子项的适配器位置返回给父适配器类。

测试案例

  1. 显示recyclerview,然后单击任何子项。

结果-工作正常

  1. 向下滚动recyclerview,然后单击任何子项。

结果-工作正常

  1. 手动滚动回到第一位置,然后单击任何子项。

结果-父recylerview位置为-1(失败的测试案例)

这可能有什么可能性? 如果您需要任何代码,我可以通过编辑提供

父级ViewHolder类

class ViewHolder extends RecyclerView.ViewHolder{

        RecyclerView reClassList;


        ViewHolder(View itemView, final Context context) {
            super(itemView);


            reClassList = itemView.findViewById(R.id.recycle_garage_list_class);

            garageListEvents = new GarageListEvents() {
                @Override
                public void getChildPositon(int childPosition) {

                    // TODO Remove
                    Log.e("GARAGE ADAPTER","Garage List Position :"+String.valueOf(getLayoutPosition()));
                }
            };
        }

儿童ViewHolder类

 public class ClassViewHolder extends RecyclerView.ViewHolder {

    public ClassViewHolder(@NonNull View itemView) {
        super(itemView);

        itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                garageListEvents.getChildPositon(getAdapterPosition());
            }
        });
    }
}

界面

public interface GarageListEvents {

public void getChildPositon(int childPosition);
}

仅供参考-GarageAdapter是父适配器

1 个答案:

答案 0 :(得分:1)

我想它必须与回收视图持有者一起做些事情。尝试将其设置为父视图持有者holder.setIsRecyclable(false);。它对性能几乎没有影响,但是应该可以解决问题。

相关问题