当滚动出视图时,在 RecyclerView 中所做的微调器选择会被重置

Spinner selections made in RecyclerView are getting reset when scrolled out of view

在 Android 中,有哪些方法可以防止 RecyclerView 中的 Spinners 在微调器移出视野时被重置?它们都具有相同的 Id,因此无法将选择保存在 ShardPreferences 对象中。而且我认为保存整个 activity 的状态也不适用于此。

您可以执行此解决方法 在项目位置的 adapter 内创建一个 HashMap,该值将是微调器中选定的索引 或者您可以向您的模型添加一个名为 spinnerIndex 的属性以将索引保存在您的项目中 你所有的工作都将在 onBindViewHolder 示例

public class Item {

    int spinnerSelectedIndex;

    public int getSpinnerSelectedIndex() {
        return spinnerSelectedIndex;
    }

    public void setSpinnerSelectedIndex(int spinnerSelectedIndex) {
        this.spinnerSelectedIndex = spinnerSelectedIndex;
    }
}

在你的onBindViewHolder

里面
spinnerObject.setSelection(getSpinnerSelectedIndex());

并且您从 onItemSelected 回调中填充索引 像这样设置微调器的监听器

spinnerObject.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
                item. setSpinnerSelectedIndex(arg2)
        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub

        }
    });

如果您的列表是只读的并且列表项不会更改,那么您可以使用 viewholder.setIsRecyclable(false)。

我仍在寻找一种方法,尽管当您有更改的列表项时。