Android setOnclick listner to listview

时间:2013-02-05 12:18:59

标签: android android-layout android-fragments android-fragmentactivity

实际上我有一个viewpager,它上面有一个Imageview和一个listview,所以当我点击Listview时,我需要隐藏listview和底栏,为viewpager旁边的所有视图制作ImageView全屏。并且单击图像视图可以获取视图。但我的问题是:

  1. 我无法在Listview上实现onClickListner,以使整个视图处理点击。我被迫使用onItemclickListner,它只在你点击项目时隐藏(这是不可取的)。
  2. 当我在寻呼机内部单击Listview(在Fragment内部)时,除了当前视图之外,它不会隐藏所有视图,但是我能够隐藏动作栏和底栏(在片段活动上)。
  3. 屏幕截图供参考:

    enter image description here

    我如何实现这一点,或者这是否有更好的方法可以隐藏视图。

    这是我的ListView在片段中:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
    
        <ImageView
            android:id="@+id/imageView"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    
        <ListView
            android:id="@+id/listView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@android:color/transparent"
            android:cacheColorHint="@android:color/transparent"
            android:divider="@android:color/transparent"
            android:listSelector="@android:color/transparent"
            android:scrollbars="none" />
    
    </RelativeLayout>
    

    这是我的片段活动布局:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/detailLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:clickable="true"
        android:orientation="vertical" >
    
        <android.support.v4.view.ViewPager
            android:id="@+id/pager"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_above="@+id/form" >
        </android.support.v4.view.ViewPager>
    
        <RelativeLayout
            android:id="@+id/form"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:orientation="horizontal"
            android:padding="2dp" >
    
            <EditText
                android:id="@+id/editText"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_centerVertical="true"
                android:layout_toLeftOf="@+id/btnSend"
                android:drawableRight="@drawable/edit_keyboard"
                android:inputType="textMultiLine"
                android:maxLines="3" />
    
            <ImageButton
                android:id="@+id/btnSend"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_centerVertical="true"
                android:src="@drawable/send" />
        </RelativeLayout>
    
    </RelativeLayout>
    

    使用onitemclicklister成功进入ListView:

    listComments.setOnItemClickListener(new OnItemClickListener() {
    
                @Override
                public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
                    // TODO Auto-generated method stub
    
                    if (getSherlockActivity().getSupportActionBar().isShowing()) {
                        getSherlockActivity().getSupportActionBar().hide();
                        listComments.setVisibility(View.GONE);
                        form.setVisibility(View.GONE);
                    } else {
                        getSherlockActivity().getSupportActionBar().show();
                        listComments.setVisibility(View.VISIBLE);
                        form.setVisibility(View.VISIBLE);
                    }
                }
            });
    
            imageView.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    getSherlockActivity().getSupportActionBar().show();
                    listComments.setVisibility(View.VISIBLE);
                    form.setVisibility(View.VISIBLE);
                }
            });
    

1 个答案:

答案 0 :(得分:0)

你能为listView设置clickable属性并检查吗?此外,每当您添加新的edittext时,您是否动态添加它?如果是这样意味着您要动态地向listView添加项目。 listView不知道您是否单击了视图本身的项目,因此当您单击该项目时,将会注册回调。