向视图添加侦听器会使listview项无法单击

时间:2013-10-31 07:59:08

标签: android listview custom-lists

我正在尝试制作自定义列表。 在列表适配器中,我已经在getView(..)方法中实现了这段代码:

        final RelativeLayout layout = (RelativeLayout) row.findViewById(R.id.layout_main);

        layout.setOnTouchListener(new View.OnTouchListener()
        {
            @Override
            public boolean onTouch(View v, MotionEvent event)
            {
                switch (event.getAction())
                    {
                        case MotionEvent.ACTION_DOWN:
                        {
                            layout.setBackgroundColor(context.getResources().getColor(R.color.asia_red_color));
                            return true;
                        }

                        case MotionEvent.ACTION_CANCEL:
                        case MotionEvent.ACTION_UP:
                        {
                            layout.setBackgroundColor(context.getResources().getColor(R.color.white));
                            return true;
                        }
                    }

                return false;
            }
        });

请注意,我实现的侦听器阻止/覆盖执行我在MainActivity中实现的onItemClickListener。

任何解决方案?

2 个答案:

答案 0 :(得分:1)

只有OnItemClickListener

定义选择器

可绘制文件夹中的bkg.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@color/white" />
<item android:drawable="@color/yellow" />
</selector>

将选择器设置为listview。到自定义布局android:background="@drawable/bkg"

在color.xml中定义颜色

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="white">#FFFFFF</color>
    <color name="yellow">#FFFF00</color>
</resources>

同时检查您的lsitview行项目是否有按钮。单击该按钮可能会获得焦点。

答案 1 :(得分:0)

我不确定这里发生了什么,但您可以尝试在OnTouchListener的{​​{1}}分支中调用超类的default,如下所示:< / p>

switch

请原谅我,如果语法不正确,因为我现在只在浏览器上,但你明白了。