2011-05-26 3 views
0

J'ai des problèmes avec setListAdapter(). Il me dit de simplement créer la méthode parce qu'elle n'en sait rien. Je suis, pour l'instant, juste en train d'essayer de remplir une liste et je ne sais même pas ce que fait ce code.problème setlistadapter Je ne sais pas comment cela fonctionne

public class PassScreen extends Activity { 
TextView selection; 
ArrayList<String> items = new ArrayList<String>(); 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.passwordscreen); 
    selection=(TextView)findViewById(R.id.selection); 

    try { 
     InputStream in=getResources().openRawResource(R.raw.words); 
     DocumentBuilder builder=DocumentBuilderFactory.newInstance().newDocumentBuilder(); 
     Document doc = builder.parse(in,null); 
     NodeList words=doc.getElementsByTagName("word"); 
     for (int i =0;i<words.getLength();i++){ 
      items.add(((Element)words.item(i)).getAttribute("value")); 
     } 
     in.close(); 
    } 
    catch (Throwable t){ 
     Toast.makeText(this, "Exception: " + t.toString(), 2000).show(); 
    } 

      setListAdapter(new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, 
      items)); 

} 
public void onListItemClick(ListView parent, View v, int position, long id){ 
    selection.setText(items.get(position).toString()); 
} 
} 

Comme vous pouvez le voir, je l'ai et fichier xml que j'utilise. Cela ressemble à quoi le livre ressemble mais là encore je copie et je colle le setListAdapter() donc je suppose que ce n'est pas très utile.

Si vous pouviez également me montrer ce que setListAdapter() fait, ce serait génial. Je ne peux pas voir pour comprendre de quoi Google parle.

Voici le xml:

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

<TextView 
android:id="@+id/selection" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content"/> 

<ListView 
    android:id="@android:id/list" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:drawSelectorOnTop="false"/> 

</LinearLayout> 

Et quelques-uns des mots xml:

<words> 
<word value="lorem"/> 
<word value="ipsom"/> 
<word value="dolor"/> 
</words> 

pouvez aussi vous expliquer ce qui se passe? Je ne comprends pas du tout le setListAdapter(). Ou pointez simplement sur du papier blanc Googles. Je ne peux pas le trouver. Ce n'est pas comme si je savais comment regarder ça de toute façon.

+0

Eh bien, j'ai compris ce qui n'allait pas avec mon code. Je devais juste étendre ListActivity. Cependant, leur est toujours pas de liste. Je vais devoir continuer à chercher, mais si vous pouvez voir quelque chose que je ne peux pas et corriger, ce serait génial. Cela m'a seulement pris une heure pour le découvrir. Et juste après posté. – Funlamb

+0

Trouvé le problème. J'avais besoin d'ajouter une orientation à ma mise en page. ARGH! – Funlamb

Répondre

3

setListAdapter() n'est pas une méthode que vous pouvez appeler sur un Activity (il est disponible sur ListActivity mais vous ne l'utilisez pas). Vous allez devoir ajouter un ListView dans votre mise en page (/ res/layout/passwordscreen), puis le trouver et appeler le setAdapter à ce sujet.

par exemple.

ListView lv = (ListView) findViewById(R.id.mylistview); 
lv.setAdapter(.....); 
+0

Oui, je l'ai eu après ma publication. J'ai cherché 1 heure hier à essayer de le comprendre. Ensuite, j'ai essayé pendant près de 30 minutes aujourd'hui. Donc je l'ai juste posté. J'ai corrigé cela mais je n'ai pas de liste qui apparaît. Je n'ai pas d'erreurs, donc je peux lancer le programme mais je n'ai pas de liste. Merci pour votre réponse rapide. – Funlamb

+0

Félicitations pour votre un millionième téléchargement, je viens de blaguer votre blag. – Funlamb

+0

Merci, BatteryWidget est maintenant 4,2 millions de téléchargements, ce blog a été un peu de retour. Aussi, si vous voulez coller une partie de la mise en page xml ici, je vais vérifier, peut-être votre listview n'a pas d'espace sur l'écran. Pouvez-vous cocher ma réponse précédente aussi? Merci. – GeekYouUp

3

Hey C'est à cause de la classe de base, votre classe de base devrait être:

public class yourClassName extends ListActivity{ 

yourClassName Pas de classe étend l'activité {

0

Lorsque vous appelez setListAdapter cela doit se prolonger ListActivity probablement vous classe étend seulement Activité.

Je l'ai vu sur un autre post et ça marche pour moi !!

Questions connexes