小白提问——单选这样实现有什么问题吗?

61 阅读1分钟

小白一个,之前写单选总是先遍历list,将所有item设置为false,再将新点击的设置为true,今天写单选功能时,突然觉得可以优化一下,于是有了以下代码,不知道有没有什么不足之处,大佬们帮忙指点一下

/**
 * 列表单选
 *
 * @param position
 */

private int lastTimeCheckPosition = -1;//上次选中的item

private void singleChoice(int position) {
    if (list.get(position).isCheck()) return;
    if (lastTimeCheckPosition != -1) {
        //上次选中被记录
        list.get(lastTimeCheckPosition).setCheck(false);
        adapter.notifyItemChanged(lastTimeCheckPosition);
    } else {
        //上次选中未记录,循环找出选中item改为未选中
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).isCheck()) {
                list.get(i).setCheck(false);
                adapter.notifyItemChanged(i);
                break;
            }
        }
    }

    list.get(position).setCheck(true);
    adapter.notifyItemChanged(position);
    //记录item
    lastTimeCheckPosition = position;
}