3

好的,我知道这可能听起来像有关 ListView 和 ListActivity 问题的任何其他问题,但事实并非如此,我会发疯的,因为我在过去一周继续搜索所有帖子以找到任何可能有帮助的解决方案我。已经通过自定义选择器和GetView Vs尝试了ListView 项目背景。自定义 CursorAdapter 中的 BindView?所有其他可能的博客网站...

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

现在在 XML 方面我有test_list_view.xml第二个row_view.xml现在我按照上面提到的答案并实现selectorrow_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_width="wrap_content"
    android:layout_height="wrap_content"
    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.

任何帮助的人将不胜感激。

提前致谢。

三吉

4

2 回答 2

1

我建议你android:focusable="true"ListView.

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

我希望这有帮助

编辑:

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

lv.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            yourMethod();
        }
    });
于 2011-03-31T15:19:14.130 回答
1

遵循 raukodraug 的建议并发布 ListView OnItemClickListener Not Responding?

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

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

仅当您单击以黄色突出显示的区域和ImageView. 这个应该可以解决 谢谢

在此处输入图像描述

已编辑

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

于 2011-04-02T06:50:54.513 回答