Android Listview OnItemClickListener有时无法正常工作

时间:2014-07-16 13:57:39

标签: android listview onitemclicklistener

我有一个带有listview的小型Android APP。有时列表视图不会对我的输入作出反应。我可以看到我触及了一个项目(当我触摸它时它会改变颜色),但程序什么都不做。 这是我的XML文件:

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:focusable="false"
    android:focusableInTouchMode="false" >

    <TextView
        android:id="@+id/textViewRowLable"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="5dp"
        android:textSize="50sp" />

    <TextView
        android:id="@+id/textViewTime"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_toRightOf="@id/textViewRowLable"
        android:gravity="right"
        android:textSize="25sp" />

    <TextView
        android:id="@+id/textViewRemainingTime"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_below="@id/textViewTime"
        android:layout_toRightOf="@id/textViewRowLable"
        android:gravity="right"
        android:textSize="25sp" />

</RelativeLayout>

这是列表:

 .setOnItemClickListener(new AdapterView.OnItemClickListener() {

                    @Override
                    public void onItemClick(AdapterView<?> parent, View view,
                            int position, long id) {
                        Toast.makeText(getApplicationContext(), "click", Toast.LENGTH_LONG).show();
                    }

                });

有人可以给我一个暗示,为什么它并不总是有效?

谢谢

2 个答案:

答案 0 :(得分:0)

尝试在android:descendantFocusability="blocksDescendants"上使用RelativeLayout 另请阅读本教程: Listview tips and tricks

答案 1 :(得分:0)

我有类似的问题。比我查看Android源代码并找到原因。

在点击处理中,有以下一行

if (mDataChanged) return;

因此,当内部列表数据发生变化时,将忽略点击。

我经常更新列表。减少更新间隔几乎解决了问题(在更改之后,100次点击中只有1次未被识别)