Android ListView 项目以编程方式突出显示

Posted

技术标签:

【中文标题】Android ListView 项目以编程方式突出显示【英文标题】:Android ListView item highlight programmatically 【发布时间】:2011-01-26 13:22:26 【问题描述】:

我知道有人问过这个问题,但我还没有找到答案(android 新手,很抱歉我的无知)

我的应用启动 Activity 有一个 EditText(称为搜索框)、一个 ListView(名称)和一个 Spinner(类型)

我使用 EditText 作为搜索框,我必须通过自定义编辑传递字符串以使搜索更加灵活。之后,我将其与我在“名称”中找到的最接近的近似值进行匹配并执行

designations.setSelection(j);

正如预期的那样,这会将所需的项目设置到名称的顶部。但我找不到通过代码突出显示它的方法。

现在,我知道如果设备处于触摸模式,则不会突出显示所选项目。所以我的搜索框的 onTextChanged 事件的最后 4 行是:

        designations.setFocusable(true);            
        designations.setFocusableInTouchMode(true);
        if (match==true)      designations.setSelection(j);
        if (st.length()==0)   designations.setSelection(0);

无济于事。

现在,我在搜索框的 afterTextChanged(Editable s) 上没有任何代码;

那么有人可以给我一个线索吗?

问候 ~dh

【问题讨论】:

【参考方案1】:

查看 requestFocus() 和 requestChildFocus()

【讨论】:

感谢 jq,它起作用了(只需使用 requestFocus())。但是,在阅读此内容后:android-developers.blogspot.com/2008/12/touch-mode.html 我认为我根本不会实现突出显示谢谢,今天又学到了一件事【参考方案2】:

您是否尝试过设置实际的View 被选中?

designations.setSelection(j);
designations.getSelectedView().setSelected(true);

【讨论】:

以上是关于Android ListView 项目以编程方式突出显示的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式滚动到 Android ListView 中的特定位置

以编程方式抛出 ListView Android

如何在android中以编程方式设置listview高度

如何以编程方式选择 ListView 中的项目?

Android:以编程方式突出显示listview中的当前选定选项

WPF ListView - 如何以编程方式添加项目?