5

这个问题已经困扰我一段时间了。我有一个列表视图,每一行都有三个 EditText,用户可以在其中输入数据。当用户选择一个编辑框时,文本应该被选中,所以当他键入第一个键时,之前的文本被删除。

当 selectAllOnFocus 选项设置为 true 时,这一切都可以完美运行。当我必须调用 notifyDataSetChanged 时会出现问题。每一行都有一个用于删除该行的按钮,这就是我调用适配器的 notifyDataSetChanged 方法的时候。此后,当用户选择 EditBox 时,它不会选择整个文本,而是将光标设置到文本的左侧,并在光标下方显示一个箭头。

我尝试在代码和布局文件中设置 selectAllOnFocus,但没有运气。

我应该尝试什么?我错过了什么吗?

我尝试禁用焦点更改事件,但没有运气。

谢谢!

4

2 回答 2

0

由于每当我调用 adapter.notifyDataSetChanged() 时都会发生这种情况,我想我应该尝试绕过它。这就是我最终做的事情:

adapter.clear();     
adapter = new AdapterOfWhateverItemsTypeIs(this, items);
listview.setAdapter(adapter);   
adapter.notifyDataSetChanged();

在此之后,我得到了 EditText 的 selectAllOnFocus 选项的预期行为。

于 2013-08-19T14:50:02.590 回答
0

您试图实现的预期行为是什么?

编辑:

为什么不尝试手动触发两次点击事件。它是一个有点 hacky 的解决方案,但如果它有效,那么谁在乎。您可以做的是从列表视图中获取您希望在其中选择文本的视图,然后像这样在帖子中触发两次点击

myEdit.post(new Runnable(){

    public void run() 
  {
    myEdit.performClick();
    myEdit.performClick();
  }

}

使用该帖子将确保在您的 listview 适配器上调用 invalidate 后视图重新膨胀后触发事件

于 2013-08-14T21:30:18.913 回答