1

我是 Eclipse 和 Android 应用程序开发的新手。两天来一直试图解决这个问题,但没有运气。在网上和文档上冲浪了……好几个小时。:S

我有一个 ListFragment 和一个包含在 RelativeLayout 中的按钮。该按钮位于列表下方,并且在应用程序启动时列表最初是空的,这正是我想要的。我正在使用 ArrayAdapter,我的项目(现在是字符串对象)在 ArrayList 中。

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

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

如何指定我的空 ListFragment 列表中的新项目应出现在列表的最顶部?

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

4

3 回答 3

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();
}
于 2013-09-25T23:20:37.703 回答
1

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

的变化

android:layout_height="wrap_content"

android:layout_height="match_parent"

片段XML 标记中修复了它。我仍然不明白为什么 wrap_content 让列表项首先显示在屏幕底部。在 ListFragment 中使用时,wrap_content 如何处理最初为空的列表可能存在一些错误?

于 2013-10-01T10:23:11.970 回答
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>    
于 2013-09-26T11:27:27.820 回答