【问题标题】:Android multiple list views that don't scroll independentlyAndroid 不独立滚动的多个列表视图
【发布时间】:2012-05-10 13:32:02
【问题描述】:

我想创建一个包含 3 个列表和 3 个标题的页面,但我不想单独滚动它们,我希望整个页面都滚动。有谁知道我如何做到这一点?

基本上我希望它看起来像这样:

header
smlheader
list
smlheader
list
smlheader
list

通过这段代码,我尝试过实现它,但效果并不好。

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"

<TableLayout 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/white">

   <include layout="@layout/header" />
   <include layout="@layout/redcell" />

   <TableRow

       android:id="@+id/tableRow1"
       android:layout_width="wrap_content"
       android:layout_height="60dp" >


      <TextView

        android:id="@+id/fixtures_text"
        android:layout_width="match_parent"
        android:layout_height="60dp"

        android:gravity="center"
        android:text="@string/leagues"
        android:textColor="@color/white"
        android:textSize="25dp"
        android:textStyle="bold"/>




   </TableRow>

   <include layout="@layout/redcell" />

   <TableRow
       android:id="@+id/tableRow2"
       android:layout_width="wrap_content"
       android:layout_height="60dp" >


      <TextView

        android:id="@+id/results_text"
        android:layout_width="match_parent"
        android:layout_height="60dp"

        android:gravity="center"
        android:text="@string/leagues"
        android:textColor="@color/white"
        android:textSize="25dp"
        android:textStyle="bold"/>

   </TableRow>

    <include layout="@layout/redcell" />


    <ListView
    android:id="@android:id/list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
   />

</TableLayout>
<ScrollView/>

【问题讨论】:

  • 我不清楚你想要什么...你想要三个并排滚动在一起的列表,还是三个垂直排列但作为一个列表滚动的列表?
  • 你试过什么?如果没有看到您使用的代码,我们将无能为力。
  • 三个垂直排列的列表作为一个列表滚动
  • 我也编辑了我的问题,以展示我迄今为止尝试过的内容,我试图通过表格行来实现它

标签: android listview scroll


【解决方案1】:

我会尝试 Rajesh 指出的 CommonsWare MergeAdapter。这听起来正是您所需要的。

它将需要多个视图(包括列表视图)并将它们放在一起,然后将合并适配器设置为列表视图,然后,您将拥有多个列表视图。

引用文档:

MergeAdapter 接受适配器和视图的混合,并将它们作为一个连续的整体呈现给它所注入的任何 ListView。这适用于您有多个数据源的情况,或者如果您有少量普通视图要与数据列表混合,等等。

只需创建一个 MergeAdapter 并调用 addAdapter()、addView() 或 addViews()(后者接受一个 List),然后将您的适配器附加到 ListView。

编辑

1) 从here下载.jar
2) 下载 CWAC SackOfViewsAdapter 的 .jar,因为 MergeAdapter 需要它。
2) 在您的项目中创建一个名为“libs”的目录(与 src & res 处于同一级别)
3) 将两个 .jar 文件放在该文件夹中(Eclipse 应该自动从那里获取东西,只要将其设置为包含在构建中)
4) 按照我原始回复中第一个链接中的说明使用 MergeAdapter。

伪代码示例:

myMergeAdapter = new MergeAdapter();
myMergeAdapter.addView(HeaderView);
myMergeAdapter.addView(SmallHeaderView1);
myMergeAdapter.addAdapter(listAdapter1);
myMergeAdapter.addView(SmallHeaderView2);
myMergeAdapter.addAdapter(listAdapter2);
myMergeAdapter.addView(SmallHeaderView3);
myMergeAdapter.addAdapter(listAdapter3);

setListAdapter(myMergeAdapter);

编辑 2

添加完整布局的标题:

View Header = getLayoutInflater.inflate(R.layout.red_cell);
myMergeAdapter.addView(Header);

【讨论】:

  • 是的,这听起来不错,但我如何在我的代码中实现它?
  • 我还需要更改布局文件吗?我有一个名为 red cell 的布局输出文件,它只是一个带有文本视图的红条,这就是我想用作 xml 标题的内容我如何从我的布局文件夹中调用它以适应 mergeAdapter
  • @iamlukeyb,更新了我的答案。
  • 它要求我创建一个局部变量容器是正确的。 ps 再次感谢你,你是我交谈过的最有帮助的人
  • @iamlukeyb,不。我的错,我从我的一个提供该变量的项目中抓住了它。我已经修改了我的答案,所以它现在应该对你有用。看看吧。
猜你喜欢
  • 2021-05-30
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 2013-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-21
相关资源
最近更新 更多