ListView Android 不允许选择器工作,也不允许选择

Posted

技术标签:

【中文标题】ListView Android 不允许选择器工作,也不允许选择【英文标题】:ListView Android does not allow selector to work nor does it allows selections 【发布时间】:2011-07-26 22:49:03 【问题描述】:

好的,我知道这可能听起来像关于 ListView 和 ListActivity 问题的任何其他问题,但事实并非如此,我会发疯的,因为我在过去一周继续搜索所有帖子以找到任何解决方案这可能对我有帮助。已经尝试过ListView item background via custom selector 和GetView Vs. BindView in a custom CursorAdapter? 其他所有可能的博客网站...

好的,我的 listView 1 不允许选择/触发事件,2. 单击项目时不会更改行突出显示。我有一个标准 TestActivity 扩展 ListActivity 并且我已经实现了一个自定义 TestCursorAdapter extends SimpleCursorAdapter

现在我在test_list_view.xml 和第二个row_view.xml 上的XML 方面现在我按照上面提到的答案并将selector 实现为row_selector.xml。但问题在于行不接受任何点击或焦点事件。我实现了一个基本的 toast 来指示是否有任何事情发生

@Override
protected void onListItemClick(ListView l, View v , int postion, long idontnow)
    Toast.makeText(getApplicationContext(), "Hello World",  Toast.LENGTH_SHORT ).show();

test_list_view.xml 的一部分

<ListView android:id="@android:id/list" 
    android:layout_
    android:layout_
    android:drawSelectorOnTop="true" 
    android:cacheColorHint="#00000000"
    android:focusable="true" 
    android:listSelector="@color/row_selector" 
    android:background="@color/Transparent"/>

selector.xml 的一部分(基本上是从上述链接之一复制和粘贴的)

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_window_focused="false" 
        android:drawable="@color/Transparent" />
    <item 
        android:state_focused="true"
        android:state_enabled="false"
        android:state_pressed="true" 
        android:drawable="@color/green" />
    <item 
        android:state_focused="true"
        android:state_enabled="false"      
        android:drawable="@color/green" />
    <item 
        android:state_focused="true"
        android:state_pressed="true" 
        android:drawable="@color/blue" />
    <item 
        android:state_focused="false"
        android:state_pressed="true" 
        android:drawable="@color/blue" />
    <item 
        android:state_focused="true" 
        android:drawable="@color/green" />
    <item 
        android:state_selected="true" 
        android:drawable="@color/blue" />
    <item 
        android:drawable="@color/Transparent" />
</selector>

我遵循了所有我知道的选项,但仍然没有。 唯一的主要区别是我没有使用getView,而是使用bindView

任何帮助的家伙将不胜感激。

提前致谢。

三杰

【问题讨论】:

【参考方案1】:

我建议您从ListView 中删除android:focusable="true"

此外,您可以使用selector 作为ListView 中显示的项目的背景颜色。还要确保这些元素没有调用onClickonTouch 或类似的东西,并让ListView 处理点击事件。

希望对你有帮助

编辑:

对于您选择项目使用的问题

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

【讨论】:

感谢 Raukodraug,它很有效,因为我将选择器应用于背景颜色确实显示的每个项目,但它仍然没有选择行,即不会触发事件 很高兴它对您有所帮助,对于您的其他问题,我已经编辑了答案 我会在接下来的 5 小时内给它一个世界。 它的作品遵循这个项目。 ***.com/questions/2367936/…【参考方案2】:

按照 raukodraug 的建议和帖子 ListView OnItemClickListener Not Responding?

提到的另一个事实是使用bindView方法,我用过

view.setClickable(true);
view.setFocusable(true); 

仅当您单击以黄色突出显示的区域和ImageView 时,该项目单击类型才有效。我应该能解决这个问题,谢谢,

已编辑

哦 *%#$ 解决了,需要设置RelativeLayouts Add State from Children = true;

【讨论】:

以上是关于ListView Android 不允许选择器工作,也不允许选择的主要内容,如果未能解决你的问题,请参考以下文章

Android-Widget:使用 RemoteView 更改 ListView 选择器颜色

Android / Java - 如何在 listView 中找到微调器所在的行

选择器 ItemSource 值未绑定在 XAML ListView 中

更改 ListView 项目背景颜色但保留默认选择器样式?

在 Android 上更改 ListView 项目的背景颜色

Android——selector背景选择器的使用详解