0

请原谅我的英语,我是法国人!

我有一个列表视图,我想在单击某个项目时显示其他活动。但是 onItemClickListener 似乎不起作用......我在谷歌上搜索,但我什么也没找到。

这是我的代码:

XML listView(自定义):

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/activity_advert_list_listview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/background" >

<RelativeLayout
    android:id="@+id/advertBackground"
    android:layout_width="339dp"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="7.5dp"
    android:layout_marginTop="7.5dp"
    android:background="@drawable/background_advert_list" >

    <RelativeLayout
        android:id="@+id/advertImageLayout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="8dp" >

        <RelativeLayout
            android:id="@+id/advertBackgroundLayout"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@color/grey" >

            <ImageView
                android:id="@+id/advertImage"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/advertPriceLayout"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/advertImage"
            android:layout_marginTop="-30.5dp"
            android:background="@color/white_50" >

            <TextView
                android:id="@+id/advertPriceText"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:hint="@string/Price"
                android:paddingBottom="5dp"
                android:paddingLeft="7dp"
                android:paddingRight="7dp"
                android:paddingTop="3dp"
                android:textSize="14dp"
                android:textStyle="bold" />
        </RelativeLayout>
    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/advertInfosLayout"
        android:layout_width="305dp"
        android:layout_height="47dp"
        android:layout_below="@+id/advertImageLayout"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="10dp"
        android:layout_marginTop="10dp" >

        <RelativeLayout
            android:id="@+id/advertInfosLayoutLayout"
            android:layout_width="225dp"
            android:layout_height="wrap_content"
            android:layout_below="@+id/advertImageLayout" >

            <TextView
                android:id="@+id/advertTitleText"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="@string/Product_name"
                android:textColor="@color/grey_blue"
                android:textSize="15sp"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/advertSizeText"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/advertTitleText"
                android:hint="@string/Product_infos"
                android:textColor="@color/b4b5b6"
                android:textSize="15sp" />
        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/advertBookmarkLayout"
            android:layout_width="74dp"
            android:layout_height="45dp"
            android:layout_toRightOf="@+id/advertInfosLayoutLayout" >

            <Button
                android:id="@+id/advertBookmarkIcon"
                android:layout_width="26dp"
                android:layout_height="26dp"
                android:layout_centerVertical="true"
                android:background="@drawable/bookmark" />
        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/advertDistanceLayout"
            android:layout_width="50dp"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true" >

            <Button
                android:id="@+id/advertDistanceIcon"
                android:layout_width="26dp"
                android:layout_height="26dp"
                android:layout_centerHorizontal="true"
                android:background="@drawable/distance" />

            <TextView
                android:id="@+id/advertDistanceText"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/advertDistanceIcon"
                android:layout_centerHorizontal="true"
                android:text="13 km"
                android:textColor="@color/grey_midark"
                android:textSize="11sp" />
        </RelativeLayout>
    </RelativeLayout>
</RelativeLayout>

Java代码:

    list.setOnItemClickListener(new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        // Start new detail activity
        Intent intent = new Intent(activity, AdvertDetailActivity.class);
        startActivity(intent);

        Log.w("AdvertList", "Item clicked");
    }
});

你有想法吗?非常感谢 !

4

1 回答 1

4

如果要将按钮/复选框添加到 ListView 行,则应在 xml 中将其添加到它们:

    android:focusable="false"

为什么?因为你有 2 个点击区域,按钮和行本身,所以你必须把你的行作为主要的触摸区域。

试试看它是否有效。

另一方面,您的 xml 中有太多的 ViewGroups(RelativeLayouts),这会使绘制过程变慢。只有一个(如果你真的需要,也许还有一些 LinearLayouts)就足够了。

于 2013-04-17T09:23:05.393 回答