Android ListFragment,新项目显示在列表底部

时间:2013-09-25 23:15:42

标签: android list fragment populate

我是Eclipse和Android应用程序开发的新手。一直试图解决这个问题两天,但没有运气。浏览网络和文档... ...许多小时。 :S

我有一个ListFragment和一个包含在RelativeLayout中的Button。该按钮位于列表下方,在app启动时列表显示为空,这是我想要的。我正在使用ArrayAdapter,我的项目(现在是String对象)位于ArrayList中。

当我点击该按钮时,列表会使用新项目进行更新,一切正常,但新项目会显示在可见列表的底部,就在按钮上方。如果我再次单击我的按钮,则会在列表底部显示一个新项目,并将第一个项目移动到第二个项目上方。为什么这样,我该如何解决?我希望第一个项目显示在列表顶部,第二个项目显示在该项目下方,第三个项目显示在第二个项目下面,依此类推。

当我添加项目时,我只是将一个项目添加到我的对象列表的开头,然后调用adapter.notifyDataSetChanged()。

如何指定空ListFragment列表中的新项目应显示在列表的最顶部?

一直在玩不同的TRANSCRIPT_MODE,但没有帮助。解决方案可能是微不足道的...但我找不到解决方案。救命啊!

3 个答案:

答案 0 :(得分:1)

如果您要在ListView的顶部添加商品,则需要在商品列表的顶部插入商品。

List items = new ArrayList();

for(Object obj : objectList) { // objectlist is a list of new items
    items.add(0, obj); // INSERT AT TOP
    listAdapter.notifyDataSetChanged();
}

答案 1 :(得分:1)

我会在这里回答我自己的问题。

改变

android:layout_height="wrap_content"

android:layout_height="match_parent"
片段 XML标记中的

修复了它。我仍然不明白为什么wrap_content首先使列表项显示在屏幕底部。也许有些错误与在ListFragment中使用时,wrap_content如何与最初的空列表一起使用?

答案 2 :(得分:0)

更清楚。

items.add(OBJ); 当我反复点击按钮时,这将填充我的初始空列表。

items.add(0,obj); 这样做也是如此,只有项目的内部顺序相反。

在两种情况下,应用程序运行时的第一个可见项目显示在添加按钮(位于屏幕底部)上方。我希望第一个项目显示在ActionBar下方。 ListFragment位于相对布局中,并且定义如下

<!-- this file is included in both single-pane and two-pane versions of the layout-->
<!-- i use merge to avoid code duplication -->
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools">

    <Button
        android:id="@+id/button_add"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true" 
        android:onClick="onClick"
        android:text="@string/button_add"/>

    <fragment
        android:id="@+id/item_list"
        android:name="com.example.test.ItemListFragment"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_above="@id/button_add"
        tools:context=".ItemListActivity"
        tools:layout="@android:layout/list_content"/>
</merge>