TableLayout中的ListViews

时间:2011-04-06 00:17:52

标签: android

我在google的android-developer论坛上发布了同样的问题。 我在这里重复:

我有一个带有一个TableRow的TableLayout。 第一列/单元格是ListView。第二个细胞/柱是a TableLayout再次由2个ListView组成。

当我给xml布局充气时,一切看起来都很好,我已经设置了 适用于3个ListView中的每一个。

我已经通过适配器将虚拟元素添加到这些列表中并且能够 在列表中上下滚动。

但onItemClick没有被触发。

以下是我的布局文件 -

   <RelativeLayout android:id="@+id/top_header"
           android:layout_width="fill_parent"
           android:layout_height="wrap_content">
           <Button
                   android:text="Edit"
                   android:id="@+id/button1"
                   android:layout_width="wrap_content"
                   android:layout_height="wrap_content">
           </Button>
           <TextView
                   android:text="dummy1"
                   android:textStyle="bold"
                   android:id="@+id/textView3"
                   android:layout_width="wrap_content"
                   android:layout_height="wrap_content"
                   android:layout_toRightOf="@+id/button1"
                   android:layout_centerVertical="true"
                   android:paddingLeft="25dip"
                   android:textSize="18dip">
           </TextView>
           <Button
                   android:id="@+id/button2"
                   android:layout_alignParentTop="true"
                   android:layout_height="wrap_content"
                   android:layout_width="wrap_content"
                   android:text="Cancel"
                   android:layout_alignParentRight="true">
           </Button>
           <TextView
                   android:layout_alignParentTop="true"
                   android:text="dummy2"
                   android:textStyle="bold"
                   android:layout_height="wrap_content"
                   android:layout_width="wrap_content"
                   android:id="@+id/textView4"
                   android:layout_toLeftOf="@+id/button2"
                   android:layout_centerVertical="true"
                   android:paddingRight="25dip"
                   android:textSize="18dip">
           </TextView>
   </RelativeLayout>

   <TableLayout android:id="@+id/tableLayout1"
           android:layout_width="fill_parent"
           android:layout_height="fill_parent"
           android:shrinkColumns="1">

       <TableRow android:id="@+id/tableRow1"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:divider="@android:color/black"
           android:dividerPadding="2dip">
           <ListView
                   android:id="@+id/listView1"
                   android:layout_height="wrap_content"
                   android:layout_width="0dip"
                   android:layout_weight="1"
                   android:clickable="true"
                   android:focusable="true"
                   >
           </ListView>
           <TableLayout android:id="@+id/tableLayout2"
                   android:layout_width="0dip"
                   android:layout_height="wrap_content"
                   android:layout_weight="1"
                   android:shrinkColumns="1">
               <TextView
                   android:text="dummy3"
                   android:id="@+id/textView1"
                   android:layout_width="wrap_content"
                   android:layout_height="wrap_content"
                   android:textStyle="bold"
                   android:padding="8dip"
                   android:textSize="18dip"
                   android:background="#ff238E23">
               </TextView>
               <ListView
                   android:id="@+id/listView2"
                   android:layout_height="0dip"
                   android:layout_weight="1"
                           android:drawSelectorOnTop="false"
                           android:divider="@android:color/white"
                           android:dividerHeight="2dip"
                   android:layout_width="match_parent"
                           android:clickable="true"
                           android:focusable="true"
                   >
               </ListView>
               <TextView
                   android:text="dummy4"
                   android:textSize="18dip"
                   android:textStyle="bold"
                   android:id="@+id/textView2"
                   android:layout_width="wrap_content"
                   android:layout_height="wrap_content"
                   android:background="#ff0000ff"
                   android:padding="8dip">
               </TextView>
               <ListView
                   android:id="@+id/listView3"
                   android:layout_height="0dip"
                   android:layout_weight="1"
                           android:drawSelectorOnTop="false"
                           android:divider="@android:color/white"
                           android:dividerHeight="2dip"
                   android:layout_width="match_parent"
                           android:clickable="true"
                           android:focusable="true"
                   >
               </ListView>
           </TableLayout>
       </TableRow>

   </TableLayout>

在java文件中,我做

   ListView lv = (ListView) findViewById(R.id.listView1);
   lv.setAdapter(new EfficientAdapterLeft(this));
   lv.setOnItemClickListener(new OnItemClickListener()

{                        @覆盖                        public void onItemClick(AdapterView arg0,View view,int arg2, long arg3){                                Log.v(“blah”,“arg2”+ arg2);                                Log.v(“blah”,“arg3”+ arg3);                        }                });

我为剩下的两个列表R.id.listView2做了类似的事情 R.id.listView4。他们实例化不同的适配器但没有 完全不同。

我没有看到日志被打印出来。为什么我无法点击 item和获取onClickItem监听器被触发?即使这样做        lv.setFocusable(真);        lv.setClickable(真); 没有用。

知道发生了什么事吗?

感谢。

1 个答案:

答案 0 :(得分:1)

可能是ListView元素甚至不可见,或者它的高度为零。如果未填充ListView,则高度(因为wrap_content)将为零,从而无法单击。作为测试,手动将高度设置为25sp并查看它是否有所不同。

编辑:您必须在适配器中设置onclicklistener。现在,适配器填充的项目具有焦点,而不是整体列表视图。请参阅this作为示例。