当滚动出视图时,在 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)。
我仍在寻找一种方法,尽管当您有更改的列表项时。
在 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)。
我仍在寻找一种方法,尽管当您有更改的列表项时。