Пользовательский адаптер Listview, добавление статического нижнего колонтитула и понимание R.id.list - PullRequest
3 голосов
/ 05 июля 2010

Есть кое-что, чего я просто не понимаю, и я ищу помощи в понимании того, что здесь происходит.

У меня есть настраиваемый адаптер списка (который только расширяет BaseAdapter), который я успешно использовал для генерации и отображения списка. Теперь я хочу добавить статический нижний колонтитул в конец моего списка. Посмотрев на ряд ресурсов (в частности, этот) , я пришел к выводу, что мое нежелание использовать XML подошло к концу, и настроил следующую структуру XML в файле с именем devices_list. 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);
            }

Есть ли способ связать виджет ListView, объявленный в моем xml, с моим DeviceListAdapter? Теперь мне совершенно ясно, что я не совсем уверен, как все это работает. Любая помощь в разъяснении будет высоко ценится.

1 Ответ

1 голос
/ 06 июля 2010

У вас есть ListView и TextView, установленные на android:layout_above="@id/bottom_control_bar", что означает, что TextView будет перекрывать ListView.И вы сказали, что ваш ListView рост равен 0dip, что сделает очень короткий список.

Я бы определил ListView как находящийся выше TextView и привязанный к вершинеэкрана (android:layout_alignParentTop="true").

Есть ли способ связать виджет ListView, объявленный в моем xml, с моим DeviceListAdapter?звонить setListAdapter().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...