2

我在 android 中实现了一个可扩展的 ListView,其中我在列表视图的一个部分中填充了一个 EditText 框列表。我在 EditText 框中输入值,它以正确的方式获取值。但问题是,当我在列表的最后一个 EditText 框中输入值时,它的值会被复制到第一个 EditText 框中。

我观察到一种行为,当我在最后一个 EditText 框中输入值并按返回按钮时,焦点转到列表中的第一个 EditText 框,当我向上滚动或向下滚动时,Laste EditText 框的值被复制到第一个 EditText 框在视图中。

不知道发生了什么?

holder.editText.setOnFocusChangeListener(new OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if (!hasFocus) {
            Position position = (Position) v.findViewById(R.id.editTextField).getTag();                     
            if (res != null) {
                res.Value = ((EditText) v).getText().toString();
                Toast.makeText(mContext, res.Value,Toast.LENGTH_SHORT).show();
                setEditTextResult(res);
            }
        }
    }
});
4

1 回答 1

0

我得到了这个答案。

我必须以这种方式编写代码,以便在按下后退按钮后,编辑文本将失去焦点。代码将根据实现而有所不同,这就是我不提供编码解决方案的原因。如果您的 EditText 框要求您在代码中的其他地方获得焦点,您只需要小心。有时会导致此错误。你会发现android的这个bug,它的适配器只在内存中保留视图的当前项;导致从 EditText 框中删除值并将值复制到其他 EditText 框的错误。

您只需要注意您的 EditText 框是否在其他地方请求焦点 - 这是关键。

于 2013-02-05T06:01:26.550 回答