自定义Listview适配器,添加静态页脚,并了解R.id.list

时间:2010-07-05 19:26:49

标签: android listview sticky-footer

有些事情我没有得到,我正在寻求帮助来理解这里发生的事情。

我有一个自定义列表适配器(只是扩展了BaseAdapter),我已成功使用它来生成和显示列表。现在我想在列表底部添加一个静态页脚。在查看了许多资源(特别是this one)后,我逐渐意识到我不愿意使用XML,并在名为devices_list.xml的文件中设置以下xml布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout android:id="@+id/bottom_control_bar"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true">
    <ToggleButton android:id="@+id/bottom_control_toggle"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:textOff="Filter Favourites OFF" 
        android:textOn="Filter Favourites ON"/>
</LinearLayout>
<ListView android:id="@android:id/list"
    android:layout_width="fill_parent"
    android:layout_height="0dip" 
    android:layout_above="@id/bottom_control_bar">
</ListView>
<TextView android:id="@android:id/empty" 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    android:text="@string/main_empty_list"
    android:layout_above="@id/bottom_control_bar"/>
  </RelativeLayout>

对包含列表的活动进行一些调整后,我运行了代码。我看到我的页脚,(以及作为所有内容的父项的标签小部件),但列表所在的区域是空的。

    @Override
    public void onCreate(Bundle savedInstanceState){
       super.onCreate(savedInstanceState);
       this.setContentView(R.layout.devices_list);

       db = new DbManager(this);
       db.open();

       AllCur = db.fetchAllDevices();
       startManagingCursor(AllCur);

       list = new DeviceListAdapter(this, AllCur);   //make my custom list adapter                  
       setListAdapter(list);
            }

有没有办法将我的xml中声明的ListView小部件与我的DeviceListAdapter相关联?现在我很清楚,我不完全确定这是如何工作的。任何澄清的帮助都将非常感激。

1 个答案:

答案 0 :(得分:1)

您同时将ListViewTextView设置为android:layout_above="@id/bottom_control_bar",这意味着TextView将与ListView重叠。并且,您已经说过ListView身高0dip,这将是一个极短的列表。

我会将ListView定义为位于TextView之上并锚定在屏幕顶部(android:layout_alignParentTop="true")。

  

有没有办法连接到   在我的xml中声明的ListView小部件   使用我的DeviceListAdapter?

您已经致电setListAdapter()