Erreur: ArrayAdapter nécessite l'ID de ressource pour être un TextView
Qu'est-ce que cela signifie? Je me bats avec ce ListView
que j'ai à l'aide d'un ArrayAdapter
. J'ai écrit cette belle boîte de dialogue fragment que j'ai appeler en arrière, à une updateUI listner parce que je veux les mettre à jour cette ListView
j'ai dans mon fragment de la DialogFragment
au premier abord le ArrayAdapter
était un type complexe d'une classe que j'ai Créée:
ArrayAdapter<Location> theLocations;
...
//in oncreateview
theLocations = new ArrayAdapter<Location>(mContext, R.layout.location_row, locations);
//here locations is an ArrayList<Location>
alors j'ai:
public void onUIUpdate(Location l) { //called from dialog fragment
locations.add(l);
theLocations.notifyDataSetChanged();
}
puis qui a donné l'erreur ci-dessus, donc je l'ai mis pour n'utiliser qu'un
String[] locationNames = new String[sizeofLocations];
theLocations=new ArrayAdapter<String>(mContext, R.layout.location_Row, locationNames );
public void onUIUpdate(Location l) {
locations.add(l);
locationNames = new String[locations.size()];
for(locations.size() etc...) {
locationNames [i] = new String(locations.get(i).getName());
}
theLocations.notifyDataSetChanged();
}
cela n'a pas d'erreur dans ma méthode de mise à jour (les mises à jour de l'interface utilisateur), mais il n'a pas de mise à jour de quoi que ce soit. Donc je suis perdu quant à la façon de mettre à jour cette ArrayAdapter, j'ai pensé notifyChange était censé le faire, mais il ne fait rien ou renvoie l'erreur ci-dessus.
Je n'ai pas de problèmes avec mon SimpleCursorAdapters ailleurs dans mon programme (tant Que mes curseurs restent ouverts et j'appelle une actualisation sur eux).
Des idées dans ce que je fais de mal?
Sur demande, voici ma présentation pour le R. layout.location_row
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content" android:layout_width="fill_parent" android:orientation="horizontal">
<TextView android:text="@+id/TextView01" android:layout_height="wrap_content" android:id="@+id/location_name"
android:textSize="15px" android:layout_marginTop="10px" android:layout_width="wrap_content"></TextView>
<TextView android:text="|" android:layout_height="wrap_content"
android:textSize="15px" android:layout_marginTop="6px" android:layout_width="wrap_content"></TextView>
<TextView android:text="@+id/TextView01" android:layout_height="wrap_content" android:id="@+id/location_lat"
android:textSize="15px" android:layout_marginTop="6px" android:layout_width="wrap_content"></TextView>
<TextView android:text="|$" android:layout_height="wrap_content"
android:textSize="15px" android:layout_marginTop="6px" android:layout_width="wrap_content"></TextView>
<TextView android:text="@+id/TextView01" android:layout_height="wrap_content" android:id="@+id/location_lon"
android:textSize="15px" android:layout_marginTop="6px" android:layout_width="wrap_content"></TextView>
</LinearLayout>
fait, je me rends compte que l'erreur est de prétendre qu'il est impossible de définir un TextView à autre chose (sans doute mon type d'Emplacement de complexClass) si je soupçonnais la surcharge de toString serait de prendre soin de cela?
OriginalL'auteur Codejoy | 2011-07-25
Vous devez vous connecter pour publier un commentaire.
Comme nous pouvons le lire dans http://developer.android.com/reference/android/widget/ArrayAdapter.html
ArrayAdapter fonctionne avec des chaînes à la textviews. Vous pouvez utiliser ce constructeur
specifyng l'id d'un TextView à l'intérieur de votre mise en page ou de remplacer
retour de vue de votre type personnalisé.
Je pense ussual d'étendre BaseAdapter classe
C'est fondamentalement la création d'un CustomAdapter?
Oui, un adaptateur personnalisé qui s'étend BaseAdapter. Sur getView (), vous pouvez gonfler votre mise en page et de le retourner.
ok un grand merci juste l'apprentissage de la terminologie.
OriginalL'auteur Rafaesp