我有一个tested_value = 1
if tested_value is 1, 2, 3, 4, 5
print("tested_value is an integer between 1 and 5")
else
print("tested_value is not an integer between 1 and 5)
,带有一个扩展了ListView
的自定义适配器,我的ListView有ArrayAdapter
种可以容纳的不同类型的项目,这就是为什么我使用{{ 1}}这个问题对我来说很奇怪,我不确定如何调试。我将发布视频。
如您所见,我一开始点击的是5
和ArrayAdapter
项目,但没有任何问题,但是只要我向下滚动并向上备份,它们就不再单击!这是我面临的一个非常奇怪的错误。这是我做适配器的方法。
这是我的适配器类代码。它相当紧凑。
Checkbox
我有一个名为Modal
的{{1}}类,我的public class SettingAdapter extends ArrayAdapter<Setting> {
private List<Setting> settings;
public SettingAdapter(Context context) {
super(context, 0);
setSettings(new ArrayList<>());
}
public SettingAdapter(Context context, List<Setting> settings) {
super(context, 0);
setSettings(settings);
}
public void setSettings(List<Setting> settings) {
this.settings = settings;
clear();
addAll(settings);
notifyDataSetChanged();
}
@Override
public int getViewTypeCount() {
return 4;
}
@Override
public Setting getItem(int i) {
return settings.get(i);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
return Objects.requireNonNull(getItem(position)).getView(getContext());
}
}
项目将扩展该类并实现abstract
等。
这里是一个例子。
Setting
我也保存了我的ListView
参考,以备后用,我不确定自己在做什么错,有人可以指导我进行调试或修复吗?花了十多个小时仍然没有成功。
答案 0 :(得分:0)
好的,尝试不缓存视图,只需在Setting.getView(Context context)上重新创建它,然后保存视图状态并返回即可。
我创建了4种不同的物品并与我一起工作。
如果您想缓存视图,我真的推荐RecyclerView