【问题标题】:Click item in listview does not work列表视图中的单击项目不起作用
【发布时间】:2016-09-20 04:22:24
【问题描述】:

当我点击任何列表项时,没有任何反应,有人可以帮忙或告诉我问题出在哪里吗...?

这是我的列表视图:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    tools:context=".defineBybeldbAlles">


    <ListView
        android:id="@+id/BybelHoofstukListView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:divider="#ff303030"
        android:dividerHeight="1dp"
        android:layout_marginTop="5dp"
        android:choiceMode="singleChoice" />
</RelativeLayout>

这是我的列表视图项:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:focusable="false"
    android:focusableInTouchMode="false"
    android:descendantFocusability="blocksDescendants"
    android:layout_height="match_parent">

    <LinearLayout
            android:id="@+id/customButtonLayout"
            android:layout_height="50dp"
            style="@android:style/Widget.Button"
            android:focusable="false"
            android:layout_width="200dp">

            <! hoofstuk_id is hidden and is only for reference >
            <TextView
                android:text="id"
                android:id="@+id/hoofstuk_id"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:visibility="gone"
                >
            </TextView>

            <TextView
                android:textColor="#000"
                android:text="nommer"
                android:layout_height="wrap_content"
                android:id="@+id/custom_row_hoofstuktext"
                android:layout_width="wrap_content"
                android:layout_marginLeft="10dp">
            </TextView>

        </LinearLayout>

    </LinearLayout>

这是我在活动中的 OnItemclicklistener:

 listviewHoofstuk.setOnItemClickListener(new AdapterView.OnItemClickListener(){

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

//on selecting a hoofstk
//BybelActivityVers will be launched to show verse inside

Intent hoofstukIntent = new Intent(BybelActivityHoofstuk.this,BybelActivityVers.class);

//send hoofstuk_id to VersActivity to get verse under that book

String hoofstuk_id_na_vers =((TextView)view.findViewById(R.id.hoofstuk_id)).getText().toString();
hoofstukIntent.putExtra("hoofstuk_id", hoofstuk_id_na_vers);

startActivity(hoofstukIntent);
}
});

我查看了其他一些解决方案,但在我的情况下没有任何效果,我添加了这段代码,但无论我是否使用它都没有区别:

android:focusable="false"

android:focusableInTouchMode="false"

android:descendantFocusability="blocksDescendants"

【问题讨论】:

  • 请发布您的适配器类
  • 您是否遇到任何错误?..或者您是否尝试调试并找出它是否进入方法内部??
  • 删除这些 android:focusable="false" android:focusableInTouchMode="false" android:descendantFocusability="blocksDescendants"。不需要使用它

标签: android listview android-studio android-adapter onitemclicklistener


【解决方案1】:

您的列表项正在获得焦点。在 my Listview Item xml 文件中的 LinearLayout 标记中设置以下行

 android:clickable="false"

你的意图会在没有集中注意力的情况下触发并正常工作我已经检查过了......一旦它适合你,请告诉我......

【讨论】:

  • 我删除了android:focusable="false" android:focusableInTouchMode="false" android:descendantFocusability="blocksDescendants",然后应用了你的代码,它没有用,所以我放回 android:focusable="false" 并且它有效。非常感谢!
【解决方案2】:

在这里使用 AdapterView 获取 adpater 项目视图,您应该使用 parent 来查找 TextView

listviewHoofstuk.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                //on selecting a hoofstk
                //BybelActivityVers will be launched to show verse inside

                Intent hoofstukIntent = new Intent(BybelActivityHoofstuk.this,BybelActivityVers.class);

                //send hoofstuk_id to VersActivity to get verse under that book
                String hoofstuk_id_na_vers =((TextView)parent.findViewById(R.id.hoofstuk_id)).getText().toString();
                hoofstukIntent.putExtra("hoofstuk_id", hoofstuk_id_na_vers);
                startActivity(hoofstukIntent);
            }
        });

【讨论】:

    【解决方案3】:

    这是您的解决方案:

        <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        tools:context=".defineBybeldbAlles">
    
        <ListView
            android:id="@+id/BybelHoofstukListView"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:divider="#ff303030"
            android:dividerHeight="1dp"
            android:layout_marginTop="5dp"/>
    </RelativeLayout>
    

    在您的列表视图项目中,您必须进行以下更改:

    <LinearLayout
            android:id="@+id/customButtonLayout"
            android:layout_height="50dp"
            style="@android:style/Widget.Button"
            android:layout_width="200dp">
    
            <! hoofstuk_id is hidden and is only for reference >
            <TextView
                android:text="id"
                android:id="@+id/hoofstuk_id"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:visibility="gone"
                >
            </TextView>
    
            <TextView
                android:textColor="#000"
                android:text="nommer"
                android:layout_height="wrap_content"
                android:id="@+id/custom_row_hoofstuktext"
                android:layout_width="wrap_content"
                android:layout_marginLeft="10dp">
            </TextView>
    
        </LinearLayout>
    
    </LinearLayout>
    

    如果不只是对此答案发表评论,这应该可以解决您的问题。之后,您将开始获取列表视图的 OnItemClick() 事件。

    【讨论】:

      【解决方案4】:

      我删除了

      android:focusable="false"
      android:focusableInTouchMode="false"
      android:descendantFocusability="blocksDescendants"
      

      然后申请

      android:clickable="false"
      

      它没有工作,但在摆弄后我发现

      android:clickable="false"
      android:focusable="false"
      

      组合成功了!

      这是在 LinearLayout 之后的 listview item 中应用的。

      我测试并确认它也适用于 Gridview。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多