2011-01-29 6 views
1

Je souhaite ouvrir un Dialog chaque fois que je clique sur un élément ListView.Ouvrez une boîte de dialogue sur l'élément ListView, cliquez sur

Ce code ne fonctionne pas et je ne trouve vraiment pas d'erreur. S'il vous plaît aider!

private void loadFeed(){ 
      try{ 
       BaseFeedParser parser = new BaseFeedParser(); 
       messages = parser.parse(); 
       List<String> descriptions = new ArrayList<String>(); 
       List<String> titles = new ArrayList<String>(messages.size()); 
       for (Message msg : messages){ 
        descriptions.add(msg.getDescription()); 
        titles.add(msg.getTitle() + "\n" +msg.getDate()); 
       } 
       ArrayAdapter<String> adapter = 
        new ArrayAdapter<String>(this, R.layout.row,titles); 
       this.setListAdapter(adapter); 
      } catch (Throwable t){ 
       Log.e("AndroidNews",t.getMessage(),t); 
      } 
     } 


     @Override 
     protected void onListItemClick(ListView descriptions, 
        View v, int position, long id) { 
      super.onListItemClick(descriptions, v, position, id); 
      String description = descriptions.get(position); 
      Dialog dialog = new Dialog(this); 
       dialog.setContentView(R.layout.single); 
       dialog.setTitle("Blog"); 
       dialog.setCancelable(true); 
       TextView text = (TextView) dialog.findViewById(R.id.TextView1); 
       text.setText(description); 
       dialog.show(); 

     } 

avec ce code de l'application est en cours d'exécution, la boîte de dialogue montrent la description, mais la description est également représentée dans l'élément de liste.

messages = parser.parse(); 
List<String> titles = new ArrayList<String>(messages.size()); 
for (Message msg : messages){ 
    titles.add(msg.getTitle() + "\n" +msg.getDate() + "\n\n" + msg.getDescription()); 
} 
ArrayAdapter<String> adapter = 
       new ArrayAdapter<String>(this, R.layout.row,titles); 
this.setListAdapter(adapter); 

protected void onListItemClick(ListView l, View v, int position, long id) { 
     super.onListItemClick(l, v, position, id); 
     String selection = l.getItemAtPosition(position).toString(); 
     Dialog dialog = new Dialog(this); 
      dialog.setContentView(R.layout.row2) 
      dialog.setCancelable(true); 
      TextView text = (TextView) dialog.findViewById(R.id.SinglePost); 
      text.setText(selection); 
      dialog.show(); 

    } 
+0

@kotas: Mauvais, signifie ce problème que vous rencontrez, pouvez-vous pls me dire, si vous aviez eu des problèmes dans Logcat ou non –

+0

éclipse ne marche pas laisser le programme run..it mettre en évidence avec la ligne rouge du get dans String description = descriptions.get (position); et dit d'ajouter cast à des descriptions (je l'ai essayé, mais qui force mon application) –

Répondre

2

Cela ne va pas travailler parce que la méthode get(int i) n'existe pas pour le type ListView, ni pour la ArrayAdapter.

EDIT:

Vous semblez confondre la classe ListView et l'interface List. Ce sont deux choses totalement différentes!

Une classe qui implémente l'interface List comme le ArrayList dans votre cas contient des objets et une classe ListView est et le widget Android qui affiche View s dans une représentation de liste.

Je vous recommande vraiment de travailler à travers la section tutoriel Hello Views afin que vous ayez une compréhension de base des vues Android avant de plonger dans des choses plus complexes.

+0

est-il un moyen de le réparer s'il vous plaît? –

+0

si je change dans le onListItemClick (ListView l, ...) et puis super.onListItemClick (l, ...) il met en évidence les descriptions et me invite à créer une variable locale .. –

+0

Il serait utile si vous nous dire ce que vous essayez d'atteindre avec cette méthode get. –

0

Je fais quelque chose comme ça ... et cela m'aide beaucoup. Je ne suis pas à moi donc s'il vous plaît donner le crédit qui lui est dû.

http://stackoverflow.com/questions/6467140/how-to-open-dialog-from-listview 
Questions connexes