1

我在 ListView 中有 EditText 用于内联编辑。用户可以修改其值,然后将值存储在 SQLite 数据库中。

我正在使用自定义 DataAdapter 来填充 ListView。

列表视图中有 15 行。一次可见 4 行,使用滚动条查看其他行(向上/向下)

问题:第一次加载 ListView。用户在每个 EditText 中写入 EditText 1、2、3、4。滚动条向下移动,用户将数据一一输入到所有行中。当用户向上移动滚动条以查看前 4 行...第 4 行显示错误数据而不是 4 它显示 14,这是用户输入的最后一个值(或者我有一些其他随机值,例如 10/ 13/11 等)

在我的自定义 DataAdapter 类中,当 EditText 失去焦点时,我将用户输入存储到数据源中,如下所示:

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 会显示错误的值,或者它们都会显示错误的值,并且在向下移动滚动条时,这种行为会发生变化。

4

0 回答 0