gpt4 book ai didi

java - bindView() 中的 ListView.setItemChecked() 带走了我刚刚单击的 EditText 的焦点

转载 作者:行者123 更新时间:2023-11-30 03:46:56 26 4
gpt4 key购买 nike

我在 ListView 项中有一个 Edittext 和一个 CheckedTextView(布局实现了 Checkable)。当我单击 EditText 时,CursorAdapter 的 bindView() 方法调用 ListView.setItemChecked()(我这样做是为了恢复清除过滤器后可能必须恢复的 CheckMarks)。但是,ListView.setItemChecked() 似乎立即从我刚刚单击的 EditText 中夺走了焦点(或此处发生的其他事情?),所以现在我不能再使用 EditText。

我有办法在 bindView() 中调用 ListView.setItemChecked() 而没有这种副作用吗?我已经尝试在 adapter.getFilter().filter() 之后调用 ListView.setItemChecked() (在 bindView() 之外),但在这种情况下,新项目列表似乎还不可用,因为过滤是在后台完成的线。

有什么建议吗?

最佳答案

找到答案:像这样使用 FilterListener 类

adapter.getFilter().filter("", new FilterListener() {

  @Override
public void onFilterComplete(int count) {
for (int i = 0; i < adapter.getCount(); i++) {
if (selected.contains((int) adapter.getItemId(i)))
listView.setItemChecked(i, true);
}
}
});

编辑:严格来说这不是一个答案,因为我仍然不知道为什么 setItemChecked 不能在不与 edittext 交互的情况下用于 bindView()

关于java - bindView() 中的 ListView.setItemChecked() 带走了我刚刚单击的 EditText 的焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14850062/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com