Il y a quelque chose que je ne reçois tout simplement pas, et je cherche de l'aide pour comprendre ce qui se passe ici.Custom Listview Adapter, ajouter un pied de page statique, et comprendre R.id.list
J'ai un adaptateur de liste personnalisé (qui étend simplement BaseAdapter) que j'ai utilisé avec succès pour générer et afficher une liste. Maintenant, je veux ajouter un pied de page statique au bas de ma liste. Après avoir examiné un certain nombre de ressources (en particulier this one) je me suis rendu compte que ma réticence d'utiliser XML doit prendre fin, et mettre en place la mise en page XML suivant dans un fichier appelé 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>
Après quelques ajustements à l'activité qui contient la liste, je courais le code. Je vois mon pied de page, (et le widget onglet qui est parent à tout), mais la zone où la liste est longue est vide.
@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);
}
Existe-t-il un moyen de lier le widget ListView déclaré dans mon fichier XML avec mon DeviceListAdapter? Il est clair pour moi maintenant que je ne suis pas entièrement sûr de la façon dont tout cela fonctionne. Toute aide à la clarification serait très appréciée.
J'ai rencontré des problèmes similaires il y a quelques temps, et mon adaptateur était à l'origine du problème. Essayez le listview et affichez d'abord sur un tableau xml défini comme ressource, qui devrait s'afficher correctement. – Pentium10
Je ne suis pas vraiment sûr de ce que vous suggérez ici - si j'ai un tableau xml alors cela ne m'aide pas vraiment car je veux utiliser mon adaptateur de tableau personnalisé qui utilise un curseur que je fournis. Pour les funsies, j'ai mis le XML que j'ai essayé de faire fonctionner dans l'exemple Notepad (qui utilise le SimpleCursorAdapter et quelques tableaux XML) et mon pied de page ne semblait pas poser de problème. Donc, basé sur cela, avez-vous des indications sur la façon dont votre adaptateur causait le problème? – Aurora