Android列表视图重复滚动时编辑文本值

aka*_*tra 4 android listview

我有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;
  }
}
Run Code Online (Sandbox Code Playgroud)

我已经引用了这个链接: Listview重复动作,Android listview重复滚动项目

GOL*_*DEE 5

首先,这个问题的原因是Listview在滚动时重用它的视图,所以我们应该在get视图中有一个逻辑来管理它

if(convertview == null)
{
 //code here 
}else {
 //code here 
}    
Run Code Online (Sandbox Code Playgroud)

,但如果您不想重复使用,那么您可以使用以下内容:

 @Override
  public int getItemViewType(int position) {
    return position;
}

@Override
public int getViewTypeCount() {
    return 500;
}
Run Code Online (Sandbox Code Playgroud)