2011-04-06 25 views
0

我已经在谷歌的Android开发者论坛上发布了相同的问题。 我在这里重复:ListViews里面TableLayout

我有一个TableLayout与一个TableRow。 第一列/单元格是一个ListView。第二个单元格/列是由2个ListViews组成的 TableLayout。

当我膨胀的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() 

{ @覆盖 公共无效onItemClick( AdapterView arg0,查看视图,int arg2, long arg3)Log.v(“blah”,“arg2”+ arg2); Log.v(“blah”,“arg3”+ arg3); } });

我为剩余的两个列表R.id.listView2和 R.id.listView4做类似的事情。他们实例化不同的适配器,但没有任何 截然不同。

我没有看到打印日志。为什么我无法点击 项目并让onClickItem侦听器被触发?即使这样做 lv.setFocusable(true); lv.setClickable(true); 没有帮助。

任何想法发生了什么?

谢谢。

+0

我应该问在下面回答之前,你是否填充了你的listviews内容?我想我问的是,当你尝试点击它们时,你能看到列表视图中的任何内容吗? – 2011-04-06 00:30:17

回答

1

可能是因为ListView元素甚至不可见,或者它的高度为零。如果ListViews没有被填充,那么高度(因为wrap_content)将为零,使得它们无法点击。作为测试,手动将高度设置为25sp,看看它是否有所作为。

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

+0

可能的另一件事是,如果您正在填充内容,那么使用适配器实例化的clicklisteners会抓取点击事件,将它们传递给填充的项目而不是整个列表视图。 – 2011-04-06 00:31:04

+0

我正在填充列表视图。我可以在屏幕上看到内容。我甚至可以查看列表视图。但是当我点击列表项目时,它们既不会突出显示,也不会触发onClick监听器。 – 2011-04-06 01:46:37

+0

我编辑了我的答案,看看它是否解决了这个问题。 – 2011-04-06 15:18:42