上下滚动ListView后,ListView项目不会注册单击

时间:2018-12-27 20:07:58

标签: java android listview android-arrayadapter

我有一个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}}这个问题对我来说很奇怪,我不确定如何调试。我将发布视频。

enter image description here

如您所见,我一开始点击的是5ArrayAdapter项目,但没有任何问题,但是只要我向下滚动并向上备份,它们就不再单击!这是我面临的一个非常奇怪的错误。这是我做适配器的方法。

这是我的适配器类代码。它相当紧凑。

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参考,以备后用,我不确定自己在做什么错,有人可以指导我进行调试或修复吗?花了十多个小时仍然没有成功。

1 个答案:

答案 0 :(得分:0)

好的,尝试不缓存视图,只需在Setting.getView(Context context)上重新创建它,然后保存视图状态并返回即可。

我创建了4种不同的物品并与我一起工作。

如果您想缓存视图,我真的推荐RecyclerView