我有一个 listview
,每行有一个 textview
和一个 edit text
。如果我在一个编辑文本字段中设置一个值,然后向下滚动,我会在其他一些编辑文本字段中得到该输入字段值的重复值。我该如何解决这个问题?
我的适配器类如下所示:
public class CustomAdapter extends ArrayAdapter<String> {
private Context context;
private String[] names;
ViewHolder holder;
static class ViewHolder {
public TextView text;
public EditText editText;
}
public CustomAdapter(Context context, int textViewResourceId, String[] names) {
super(context, textViewResourceId, names);
this.context = context;
this.names = names;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.row_design, parent, false);
holder = new ViewHolder();
holder.text = (TextView) convertView.findViewById(R.id.textView1);
holder.editText = (EditText) convertView.findViewById(R.id.editText1);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
String s = names[position];
holder.text.setText(s);
return convertView;
}
}
我提到了这个链接: Listview duplicate action , Android listview duplicates the item on scroll
最佳答案
这个问题的第一个原因是 Listview 在滚动时重用它的 View , 所以我们应该在我们的 get View 中有一个逻辑来管理它
if(convertview == null)
{
//code here
}else {
//code here
}
, 但如果您不想重复使用,则可以使用以下内容:
@Override
public int getItemViewType(int position) {
return position;
}
@Override
public int getViewTypeCount() {
return 500;
}
关于Android ListView 在滚动时重复编辑文本值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19556702/