【问题标题】:ListViews inside TableLayoutTableLayout内的ListViews
【发布时间】:2011-07-30 10:17:20
【问题描述】:

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

我有一个带有一个 TableRow 的 TableLayout。 第一列/单元格是 ListView。第二个单元格/列是 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, 长 arg3) { Log.v("blah","arg2" + arg2); Log.v("blah","arg3" + arg3); } });

我对剩下的两个列表 R.id.listView2 和 R.id.listView4。他们实例化不同的适配器,但什么也没有 完全不同。

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

知道发生了什么吗?

谢谢。

【问题讨论】:

  • 我应该在下面回答之前问一下,您是否在列表视图中填充内容?我想我要问的是,当您尝试单击它们时,您能在列表视图中看到任何内容吗?

标签: android


【解决方案1】:

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

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

【讨论】:

  • 另一件事可能是,如果您正在填充内容,使用适配器实例化的点击侦听器正在抓取点击事件,将它们传递给填充的项目而不是整个列表视图。
  • 我正在填充列表视图。我可以看到屏幕上的内容。我什至可以 srcoll 列表视图。但是当我单击列表项时,它们既没有突出显示,也没有触发 onClick 侦听器。
猜你喜欢
  • 1970-01-01
  • 2013-03-23
  • 1970-01-01
  • 1970-01-01
  • 2020-01-25
  • 2019-09-03
  • 1970-01-01
  • 2012-08-28
  • 1970-01-01
相关资源
最近更新 更多