Android:动态添加项目到ListView而不会混乱

时间:2014-05-04 01:05:46

标签: android listview android-listview listactivity

ListActivity中,我有一个"更多"列表下方Button

当我点击它时,结果会正确地添加到列表中,但问题后按钮会消失!我希望它留在那里,用户当然可以再次加载更多数据!

代码是:

btnMoreItems.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // some fake data
            for (int i = 10; i < 20; i++) {
                data.add( // fake data to attach to the list //);
            }

            setListAdapter(new MyCustomArrayAdapter(MyListActivity.this, data));
        }
    });

,布局如下:

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

    <ListView
        android:id="@+id/android:list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </ListView>

    <TextView
        android:id="@+id/android:empty"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/myListEmpty" />

    <Button
        android:id="@+id/btnMoreItemsLoad"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
    → → android:layout_below="@+id/android:list ← ← ← ← ←
        android:text="@string/moreItems" />

</RelativeLayout>

当活动第一次加载时,按钮位于正确的位置。但是当点击它时,它会消失在添加的项目后面。

使用此行: android:layout_below="@+id/android:list 我希望按钮保持在其位置(我的意思是在列表中的最后一项之下)

感谢您的帮助...

2 个答案:

答案 0 :(得分:0)

将布局更改为以下内容:

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

    <ListView
        android:align_parentTop="true"   ← ← ← ← ←
        android:layout_weight="1"  ← ← ← ← ←
        android:id="@+id/android:list"
        android:layout_width="match_parent"
        android:layout_height="0dp" >
    </ListView>

    <TextView
        android:id="@+id/android:empty"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/myListEmpty" />

    <Button
        android:layout_weight="0" ← ← ← ← ←
        android:align_parentBottom="true"  ← ← ← ← ←
        android:id="@+id/btnMoreItemsLoad"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/android:list
        android:text="@string/moreItems" />

</RelativeLayout>

答案 1 :(得分:0)

试试这段代码          

    <TextView
        android:id="@+id/android:empty"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/myListEmpty" />

    <ListView
        android:id="@+id/android:list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/android:empty"
        android:layout_marginTop="5dp" >
    </ListView>

    <Button
        android:id="@+id/btnMoreItemsLoad"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
       android:layout_below="@+id/android:list"
        android:text="@string/moreItems" />

</RelativeLayout>