android - 滚动后 Recyclerview 项目位置 NOT_FOUND
问题描述
所以我有一个recyclerview
垂直方向的父级和一个recyclerview
与水平方向的父级嵌套的子级。
Onclick
功能与子recyclerview一起使用
我创建了一个接口,它将子项的适配器位置返回给父适配器类。
测试用例
- 显示
recyclerview
并单击任何子项。
结果 - 工作正常
- 向下滚动
recyclerview
并单击任何子项。
结果 - 工作正常
- 手动滚动回第一个位置,现在单击任何子项。
结果 - 父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 是父适配器
解决方案
我想这与回收观众有关。尝试将其设置为 parent viewholder holder.setIsRecyclable(false);
。它对性能影响不大,但应该可以解决问题。
推荐阅读
- excel - 评估 For Each 时,子范围选择行为令人困惑
- r - 使用 dplyr 替换字典中的项目
- curl - Filemaker baseelements FTP 更改目录
- google-analytics - 使用 Big Query,我如何在一条记录中查询多个对象?
- java - Keycloak-admin-client - 关闭日志记录
- vb.net - 如何处理 CryptographicException:“要解密的数据长度无效”?
- go - 忽略标志大小写
- groovy - Groovy 闭包不处理异常
- jquery - 轮播上的页脚重叠
- java - Base 64 到 AES 128 中的现有 DB 列