我在ListView中有EditText用于内联编辑。用户可以修改其值&然后将值存储在SQLite数据库中。
我使用Custom DataAdapter填充ListView。
listview中有15行。一次可以看到4行,以查看其他行使用滚动条(向上/向下)
问题: ListView是第一次加载。用户在每个EditText中写入EditText 1,2,3,4。 滚动条向下移动&用户一个接一个地将数据输入所有行。 当用户向上移动滚动条以查看前4行... 第4行显示错误数据而不是4时显示14,这是用户输入的最后一个值(或者我有其他一些随机值例如10/13/11等)
在我的Custom DataAdapter类中,当EditText失去Focus时,我将用户输入存储到数据源中,如下所示:
public View getView(int position, View convertView, ViewGroup parent) {
//txtComments is an EditText
holder.txtComments.setId(position);
holder.txtComments.setOnFocusChangeListener(new OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus){
final int position = v.getId();
final EditText tempComments = (EditText) v;
// items: the DataSource for the listView
items.get(position).Comments = tempComments.getText().toString();
}
}
});
}
修改
我也尝试过TEXTWATCHER,但它对我不起作用。
经过广泛测试;我们发现这个问题是随机发生的,例如有时ExitText11会显示错误的值,另一次ExitText4将显示错误的值或者它们都会显示错误的值&滚动条向上移动时,此行为会发生变化。