GridView onClickListener无法正常工作

时间:2014-05-23 00:47:53

标签: android

我正在尝试在导航抽屉中实现gridview。 gridview完美呈现;即使我触摸gridview项目,它也会显示焦点。但是没有检测到点击。请帮忙… 这是导航抽屉的问题??? 我的意思是网格视图不能在导航中工作?

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<FrameLayout
    android:id="@+id/drop"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_toRightOf="@+id/left_drawer" >
</FrameLayout>

<RelativeLayout
    android:id="@+id/left_drawer"
    android:layout_width="290dp"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:background="#373737"
    android:choiceMode="singleChoice"
    android:divider="#666"
    android:dividerHeight="1dp"
    android:paddingLeft="1dp"
    android:paddingRight="1dp" >

    <RelativeLayout
        android:id="@+id/box1"
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_weight="1" >

        <ImageView
            android:id="@+id/pref"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:src="@drawable/pref" />

        <ImageView
            android:id="@+id/temp_icon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:src="@drawable/temp" />

        <View
            android:id="@+id/sep1"
            android:layout_width="4px"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginBottom="15dp"
            android:layout_marginTop="15dp"
            android:layout_toRightOf="@+id/temp_icon"
            android:background="#3bb9ff" />

        <View
            android:id="@+id/sep2"
            android:layout_width="4px"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginBottom="15dp"
            android:layout_marginRight="3dp"
            android:layout_marginTop="10dp"
            android:layout_toLeftOf="@+id/pref" />

        <TextView
            android:id="@+id/temp_txt"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_marginLeft="10dp"
            android:layout_marginTop="3dp"
            android:layout_toLeftOf="@+id/sep2"
            android:layout_toRightOf="@+id/sep1"
            android:text="100 C"
            android:textAppearance="?android:attr/textAppearanceMedium" />

        <TextView
            android:id="@+id/extra_info"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/temp_txt"
            android:layout_alignParentBottom="true"
            android:layout_alignRight="@+id/temp_txt"
            android:layout_below="@+id/temp_txt"
            android:text="This is extra info panel make some usefull and put here"
            android:textAppearance="?android:attr/textAppearanceSmall" />
    </RelativeLayout>

    <View
        android:id="@+id/sep4"
        android:layout_width="wrap_content"
        android:layout_height="1px"
        android:layout_below="@+id/box1"
        android:layout_marginTop="4dp"
        android:background="#222222" />

    <ScrollView
        android:id="@+id/box2"
        android:layout_width="wrap_content"
        android:layout_height="70dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/box1"
        android:layout_marginTop="10dp"
        android:layout_weight="1"
        android:scrollbars="horizontal" >
    </ScrollView>

    <View
        android:id="@+id/sep5"
        android:layout_width="wrap_content"
        android:layout_height="1px"
        android:layout_below="@+id/box2"
        android:layout_marginBottom="5dp"
        android:layout_marginTop="5dp"
        android:background="#222222" />

    <RelativeLayout
        android:id="@+id/box3"
        android:layout_width="wrap_content"
        android:layout_height="150dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/sep5" >
    </RelativeLayout>

    <View
        android:id="@+id/sep6"
        android:layout_width="wrap_content"
        android:layout_height="1px"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/box3"
        android:layout_marginBottom="7dp"
        android:background="#222222" />

    <RelativeLayout
        android:id="@+id/box3333"
        android:layout_width="wrap_content"
        android:layout_height="60dp"
        android:layout_alignLeft="@+id/sep6"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/box3"
        android:layout_marginBottom="3dp"
        android:layout_marginTop="3dp" >

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:layout_marginBottom="2dp"
            android:layout_marginTop="2dp"
            android:src="@drawable/img_btn_play" />

        <ImageView
            android:id="@+id/imageView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginLeft="25dp"
            android:layout_toRightOf="@+id/imageView1"
            android:src="@drawable/img_btn_previous" />

        <ImageView
            android:id="@+id/imageView3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignTop="@+id/imageView2"
            android:layout_marginRight="14dp"
            android:layout_toLeftOf="@+id/imageView1"
            android:src="@drawable/img_btn_previous" />
    </RelativeLayout>

    <View
        android:id="@+id/sep9"
        android:layout_width="wrap_content"
        android:layout_height="1px"
        android:layout_below="@+id/box3333"
        android:layout_marginBottom="3dp"
        android:layout_marginTop="3dp"
        android:background="#222222" />

    <GridView
        android:id="@+id/scrollView1"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/sep9"
        android:clickable="true"
        android:columnWidth="50dp"
        android:gravity="center"
        android:horizontalSpacing="10dp"
        android:numColumns="auto_fit"
        android:paddingBottom="30dp"
        android:stretchMode="columnWidth"
        android:verticalSpacing="10dp" >
    </GridView>
</RelativeLayout>

</android.support.v4.widget.DrawerLayout>

这是我的代码

GridView gridView = (GridView) contentView
            .findViewById(R.id.scrollView1);
    Bitmap[] ic = JsonLibrary.saved_ps_bitmap(getApplicationContext());
    gridView.setAdapter(new GridAdapter(getApplicationContext(), ic));
    gridView.setOnItemClickListener(this);
        gridView.setOnItemClickListener(new OnItemClickListener() 
        {
            @Override
            public void onItemClick(AdapterView<?> a, View v, int position, long id) {
                Toast.makeText(getApplicationContext(), "hello", Toast.LENGTH_LONG)
                .show();
        }
    });

2 个答案:

答案 0 :(得分:0)

尝试添加作为该类的监听器。如果这对您有所帮助,请告诉我。

答案 1 :(得分:0)

这可能是听众之间的误解。在您的xml中,您有android:clickable="true"引用onClick侦听器,并且您在运行时在onItemClick上声明了两个GridView侦听器。

您应该删除此属性:

android:clickable="true" 

同时删除此行:

gridview.setOnItemClickListener(this);  

不需要这个,因为你在它之后声明了正确的。然后,不需要复制。

要理解,当您使用this作为参数时,您需要调用Activity的实现:

public class A extends Activity implement OnItemClickListener { }

但是如果你直接在GridView上而不是在Activity中声明这个点击监听器,那么这是无用的。