Android SortedList拖动和重新排序项目时抛出IndexOutOfBoundsException: 发现不一致。无效的视图持有者适配器位置视图持有者。
创始人
2024-08-15 18:30:12
0

这个错误通常是由于在使用Android SortedList时,项目的重新排序过程中出现了视图持有者适配器位置的错误。以下是一个可能的解决方案:

  1. 确保在SortedListAdapterCallback的回调方法中正确处理了项目的重新排序。例如,在onMoved方法中,您需要更新适配器中的项目位置,然后调用notifyItemMoved方法通知适配器进行项目位置的更新。
@Override
public void onMoved(int fromPosition, int toPosition) {
    // 更新适配器中的项目位置
    Collections.swap(mDataList, fromPosition, toPosition);
    // 通知适配器进行项目位置的更新
    notifyItemMoved(fromPosition, toPosition);
}
  1. 确保在视图持有者的绑定方法中正确处理项目位置的更新。例如,在bind方法中,您需要使用适配器中的正确位置来绑定数据到视图持有者。
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
    // 使用适配器中的正确位置来绑定数据到视图持有者
    ItemData item = mDataList.get(position);
    holder.bind(item);
}
  1. 如果仍然遇到问题,可以尝试使用Handler来在主线程中进行项目位置的更新。这可以确保在重新排序过程中,适配器的更新在正确的时间和顺序进行。
@Override
public void onMoved(int fromPosition, int toPosition) {
    // 使用Handler在主线程中进行项目位置的更新
    new Handler(Looper.getMainLooper()).post(new Runnable() {
        @Override
        public void run() {
            // 更新适配器中的项目位置
            Collections.swap(mDataList, fromPosition, toPosition);
            // 通知适配器进行项目位置的更新
            notifyItemMoved(fromPosition, toPosition);
        }
    });
}

通过检查以上代码和确保在项目的重新排序过程中正确处理项目位置的更新,应该可以解决这个问题。

相关内容

热门资讯

透视辅助!aapoker如何设... 透视辅助!aapoker如何设置胜率(透视)透视插件(本来是真的有挂);1、进入游戏-大厅左侧-新手...
透视中牌率!aapoker透视... 透视中牌率!aapoker透视方法(透视)透视脚本(切实是有挂);1、完成aapoker透视方法透视...
透视系统!aapoker脚本怎... 透视系统!aapoker脚本怎么用(透视)透视脚本下载(确实存在有挂)1、进入游戏-大厅左侧-新手福...
透视苹果版!aapoker如何... 透视苹果版!aapoker如何设置胜率(透视)透视软件(本来是真的有挂)1)aapoker如何设置胜...
透视有挂!aapoker怎么拿... 透视有挂!aapoker怎么拿好牌(透视)透视脚本下载(确实是真的有挂)1、操作简单,无需注册,只需...
透视存在!aapoker免费透... 透视存在!aapoker免费透视脚本(透视)透视插件(真是存在有挂)1、金币登录送、破产送、升级送、...
透视中牌率!aa poker透... 透视中牌率!aa poker透视软件(透视)万能辅助器(竟然是真的有挂);aa poker透视软件是...
透视攻略!aapoker透视怎... 透视攻略!aapoker透视怎么用(透视)透视脚本(本来有挂);1、上手简单,内置详细流程视频教学,...
透视辅助!aapoker真的假... 透视辅助!aapoker真的假的(透视)真的假的(总是有挂)1、每一步都需要思考,不同水平的挑战会更...
透视辅助!aapoker透视插... 透视辅助!aapoker透视插件(透视)插件(确实真的是有挂);1、操作简单,无需注册,只需要使用手...