android - 如何取消 Android ListView 项目在 ListView 的 setOnItemClickListener 中被激活/突出显示?

标签 android android-layout android-widget android-listview

在我的一个 Activity 中,我有多个 ListView 控件。说 list 1 list 2 list 3。单击List 1 项目时,我从网络服务加载List 2List 3 的数据。并且被点击的项目的背景被突出显示。我通过以下选择器实现了这一点。

<item android:drawable="@drawable/item_pressed" android:state_pressed="true"/>
<item android:drawable="@drawable/item_focused" android:state_focused="false" 
    android:state_pressed="false" 
    android:state_selected="true"/>
<item android:state_activated="true" android:drawable="@drawable/item_selected"/>

如您所见,我指定了 android:state_activated="true" 来更改点击/点击项目的 BG。这很好用。

实际上,如果正在加载其他项目的数据,我想阻止被点击的项目被选择/突出显示......就像

list1.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {

                // load data if no other call to web service is in progress
                if (_isNotLoadingData) {
                     loadList2AndList3DataUsingWebService();
                } else {
                    //Stop This Item From selected/highlighted
                    //BUT none of the following work. .. Item is always Selected
                    view.setSelected(false);
                    //view.setActivated(false);
                    //view.setEnabled(false);
                }
            }
        });

上面的代码停止多次调用定向到我们的网络服务,但如果没有为该 ListView 项目调用网络服务,我无法阻止该项目被突出显示/激活。

我怎样才能做到这一点?

2012 年 3 月 19 日晚上 8 点 08 分编辑: 还没有合适的回复……我被困住了,正在等待任何帮助

最佳答案

我前几天确实遇到了同样的问题。解决方案是设置 view.setItemChecked(false),而是在 .onItemClick() 方法中调用您的 listview 并设置listview.setItemChecked(position, false)。这为我解决了。

例子:

listView.setOnItemClickListener(new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> adapterView, View view,
            int position, long arg3) {

        // load data if no other call to web service is in progress
        if (_isNotLoadingData) {
             loadList2AndList3DataUsingWebService();

        } else {
            ListView lv = (ListView) adapterView;
            lv.setItemChecked(position, false);
        }
    }
});

关于android - 如何取消 Android ListView 项目在 ListView 的 setOnItemClickListener 中被激活/突出显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9699978/

相关文章:

android - 解析android资源@android :color/transparent#00000000

android - 如何将 Android 小部件添加到我的应用程序?

android - 如何将控件添加到 Android 中的选项卡布局?

android - firebase:如何链接电子邮件验证和密码

android - 在 ViewPager 中,滑动到第 3 个选项卡时,tab1 中的子 fragment 消失

android - 如何测试具有数据库操作的MVP Presenter方法

java - 如何在 Android 的菜单选项中添加带有文本的图像?

android - 如何在android中制作正在运行的应用程序的小部件?

android - 对 Android 应用从 1024 位切换到 2048 位 SSL 的影响

java.lang.NoClassDefFoundError : android/media/Image android/firebase 错误