当EditText在ListView中时,使用selectAllOnFocus的奇怪行为

时间:2013-08-09 12:32:49

标签: java android android-listview focus android-edittext

这个问题一直困扰着我一段时间。我有一个列表视图,每行有三个EditText,用户可以在其中输入数据。当用户选择编辑框时,应该选择文本,因此当他键入第一个键时,将删除前一个文本。

这一切都与selectAllOnFocus选项设置为true完美配合。当我必须调用notifyDataSetChanged时会发生此问题。每行中都有一个按钮,用于删除行,即调用适配器的notifyDataSetChanged方法时。在此之后,当用户选择EditBox时,它不会选择整个文本,但是光标设置在文本的左侧,并且光标下方会显示一个箭头。

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

我该怎么办?我错过了什么吗?

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

谢谢!

2 个答案:

答案 0 :(得分:0)

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

编辑:

为什么不尝试手动触发两次点击事件。它是一个有点hacky的解决方案,但如果它工作比谁在乎。您可以做的是从列表视图中获取您想要选择文本的视图,并在帖子中点击两次点击

myEdit.post(new Runnable(){

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

}

使用帖子可以确保在您的listview适配器上调用invalidate后重新充气视图后触发了事件

答案 1 :(得分:0)

因为只要我调用adapter.notifyDataSetChanged()就会发生这种情况,我想我应该试着去解决它。这就是我最终做的事情:

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

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