【发布时间】:2023-03-23 00:51:02
【问题描述】:
我花了几天时间弄清楚这里发生了什么。
- 带有自定义基础适配器的简单列表视图。
- Listview 包含行。
- 每行包含多个编辑文本。
|编辑文本 |第 1 行
|编辑文本 |第 2 行
|编辑文本 |第 3 行
|编辑文本 |第 4 行
问题是如果我在第 1 行输入 edittext,第 3 行的 edittext 会受到影响。它不仅复制文本,而且是焦点。如果我在第 2 行输入 edittext,第 4 行的 edittext 也会受到影响。
我使用了 ViewHolder 类。 我检查converView是否为空,然后将edittext初始化为ViewHolder,然后将其保存到converView的标签。 如果converView不为空,则复用converView,从converView的tag中获取ViewHolder。
请帮忙。
@Override
public View getView(int i, View converView, ViewGroup viewGroup) {
ViewHolder holder;
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (converView == null) {
converView = inflater.inflate(R.layout.adapteraktivitasakhirpanen, null);
holder = new ViewHolder();
holder.tv = (TextView) converView.findViewById(R.id.tvPemanen);
holder.atv1 = (AutoCompleteTextView) converView.findViewById(R.id.atvGandeng1);
holder.atv2 = (AutoCompleteTextView) converView.findViewById(R.id.atvGandeng2);
holder.atv3 = (AutoCompleteTextView) converView.findViewById(R.id.atvGandeng3);
if (totalGandeng > 0) {
holder.atv1.setMinWidth(toDP(200));
adapter = new ArrayAdapter<String>(context, android.R.layout.simple_spinner_item, listGandeng1);
holder.atv1.setAdapter(adapter);
holder.atv1.setTag(i);
}
converView.setTag(holder);
} else {
System.out.println("converView not null");
holder = (ViewHolder) converView.getTag();
}
holder.tv.setText(names.get(i));
}
static class ViewHolder {
TextView tv;
AutoCompleteTextView atv1;
AutoCompleteTextView atv2;
AutoCompleteTextView atv3;
}
谢谢
【问题讨论】:
-
请检查我的代码
-
您在哪个 android 版本中运行您的应用程序?
-
不能使用那个答案。实际上我有 3 个编辑文本,正如您在我的 ViewHolder 中看到的那样,我还有另一个刷新这些 Autocompletetextview 的函数,结果是 StackOverFlowError。
标签: android android-listview android-edittext autocompletetextview