我在ListView里面加了EditText,但是每次我随便选一行,一输入东西,它好像就触发了事件(但是我并没有写什么触发事件),ListView里面的EditText的值就会乱套了,就是说本来在这个EditText里面的内容会跳到例外一个EditText,而且刚刚我输入的那个EditText的值也可能会跳到别的EditText上,而且是无规律的,为什么呢
部分代码:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
TempView tempview;
if(convertView == null){
tempview = new TempView();
convertView = inf.inflate(R.layout.for_kfpdetail, null);
tempview.msg = (TextView) convertView.findViewById(R.id.tv_msg_kf);
tempview.et_msg = (EditText) convertView.findViewById(R.id.et_msg1);
convertView.setTag(tempview);
} else {
tempview = (TempView) convertView.getTag();
}
tempview.msg.setText(data.get(position).get("msg").toString());
return convertView;
}
class TempView {
TextView msg;
EditText et_msg;
}
部分代码:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
TempView tempview;
if(convertView == null){
tempview = new TempView();
convertView = inf.inflate(R.layout.for_kfpdetail, null);
tempview.msg = (TextView) convertView.findViewById(R.id.tv_msg_kf);
tempview.et_msg = (EditText) convertView.findViewById(R.id.et_msg1);
convertView.setTag(tempview);
} else {
tempview = (TempView) convertView.getTag();
}
tempview.msg.setText(data.get(position).get("msg").toString());
return convertView;
}
class TempView {
TextView msg;
EditText et_msg;
}
tempview = new TempView();
convertView = inf.inflate(R.layout.for_kfpdetail, null);
tempview.msg = (TextView) convertView.findViewById(R.id.tv_msg_kf);//获取到布局里的TextView
tempview.et_msg = (EditText) convertView.findViewById(R.id.et_msg1);//获取到布局里的EditText
convertView.setTag(tempview);
} else {
tempview = (TempView) convertView.getTag();//以后再进入时会到这里,可是tempview 就是第一次创建的那个
}
也就是说tempview唯一,那里面的edittext和textview都是唯一的,每个list项中都是用这两个相同的edit对象,改了一个edit,只要list一刷新(拖拽移动之类的操作),就可能跳转到其他list项里的edit。
你应该有一个TempView 的数组,list有多个个元素,也就代表有多少个TempView 。