表单上的ListView项目仅显示一个项目

时间:2013-05-28 19:51:04

标签: android listview baseadapter

我有一个包含许多EditView字段的表单。这些字段的数据从数据库加载(在onCreate()方法中)。屏幕上的最后一个对象应该是一个ListView,它应该显示正在显示的记录的所有相关数据记录。所有数据都正确加载,并且适配器似乎正常工作。它加载正确的数据,它将数据正确格式化为适配器使用的.xml指定的两行布局。

问题是屏幕上的ListView“缩小”以仅显示一个项目,如果有更多项目则添加滚动条。我希望ListView扩展大小以显示所有记录,并且屏幕本身是可滚动的(所有内容都包含在ScrollView中)。

所以,XML看起来像这样:

<ScrollView
    android:layout_height="wrap_content"
    android:id="@+id/ScrollView1">
  <RelativeLayout
      android:layout_height="wrap_content"
      android:id="@+id/RelativeLayout1">
    <EditView
      android:id="@+id/EditView1>
    </EditView>
    <ListView
      android:id="@+id/ListView1
      android:layout_height="wrap_content"
      android:layout_below="@id/EditView1>
      android:divider="#b5b5b5"
      android:dividerHeight="1dp" />

然后我使用自定义BaseAdapter将数据填充到ListView

listView = (ListView) findViewById(R.id.ListView1);
dbRecords = db.getAllRecordsByRecordId(recordId);
CBA_Records adapter = new CBA_Records(this, dbRecords);
listView.setAdapter(adapter);

这是我以前做过的所有事情,除了这些都包含在scrollview中。原因是可能有更多的字段,而不是适合较小的屏幕(或水平屏幕),因此屏幕必须是可滚动的。而且,列表视图也必须在那里......

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

更多关于invertigo说的话。 ListView内不建议使用ScrollView

ListView设为根,并将其宽度和高度设置为"match_parent"。将位于ListView(标题)之上的其他内容放在单独的xml中。然后为标题膨胀新的xml文件,使用addHeaderView()方法将其作为标题添加到ListView(看起来您希望所有内容都滚动)。

答案 1 :(得分:0)

ListView会自动垂直滚动,因此您现在有两个垂直滚动区域,您希望使用滚动事件吗?将ListView设置为静态高度(不推荐),或设计布局,以便只有要滚动的区域(即ListView)具有滚动功能并删除ScrollView。还要将基本布局(在本例中为RelativeLayout)设置为height=match-parent,并将ListView height=0dp weight=1设置为阻止ListView“缩小”。

或者,如果您不希望ListView单独滚动,请查看此解决方案:android listview display all available items without scroll with static header