2011-05-14 5 views
-1

Quelqu'un peut-il m'aider s'il vous plaît! Je suis nouveau sur Android et je commence ma première application.liste semble être brièvement montré à nouveau après la sélection

L'idée est de commencer une seconde (activité de la liste) d'une activité « principale/première » et retourner un objet sélectionné à la première. Je fais cela en utilisant un gestionnaire pour récupérer la liste des noms de classes (à partir de array.xml pour le moment), en instanciant les classes et en les ajoutant au tableau. J'étend l'adaptateur de tableau pour l'afficher.

onActivityResult() dans la première activité utilise returnData.getParcelableExtra() pour « regonfler » l'objet de l'article sélectionné.

Tout fonctionne bien, mais après avoir sélectionné un élément de la liste, la liste semble se montre à nouveau pour une fraction de seconde avant de revenir à la première activité. Cela pourrait être un comportement normal, mais il se sent juste "et se sent mal. Est-ce que je fais quelque chose de mal? Voici le code pour le onListItemClick()

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) { 
    Intent returnIntent = new Intent(); 
    returnIntent.putExtra("my.source.selected", (Thing) this.getListAdapter().getItem(position)); 
    setResult(RESULT_OK, returnIntent); 
    ExampleApplication application = (ExampleApplication) getApplication(); 
    application.setCurrentlySelectedFormat(this.things.get(position)); 
    finish(); //gives back the handle to parent activity 
} 

et pour le gestionnaire ...

private final Handler handler = new Handler() { 
    public void handleMessage(final Message msg) { 
     super.handleMessage(msg); 
     progressDialog.dismiss(); 
     if ((things == null || things.size() == 0)) { 
      empty.setText("No things found"); 
     } else { 
      setListAdapter(new ThingAdapter(SelectThing.this, R.layout.row, things)); 
     } 
    } 
}; 

    private void loadThings() {  
    if (things == null) {   
     final ThingFetcher ff = new ThingFetcher();   
     this.progressDialog = ProgressDialog.show(this, "Working...", " Retrieving things");   
     new Thread() { 
      public void run() { 
       things = ff.fetchFormats(SelectThing.this); 
       handler.sendEmptyMessage(0); 
      } 
     }.start(); 
    } 
} 

@Override 
protected void onResume() { 
    super.onResume(); 
    loadThings(); 
} 

Mon adaptateur est optimisé comme cela semble être recommandée avec support de vue et la réutilisation convertView etc.

Toute aide serait grandement appréciée.

Répondre

0

semble que le problème est pas dans le code, mais dans la mise en page XML pour les vues dans les lignes de la liste. J'ai suivi cette suggestion http://android-developers.blogspot.com/2009/02/android-layout-tricks-1.html et il semble avoir résolu le problème. Pas de "re-rendu" bref de la liste.

+0

Vous devriez accepter votre réponse, votre question sera marqué comme « réponse » et d'autres personnes savent que le problème est résolu. – Albireo

Questions connexes