2011-10-27 4 views
0

J'ai un ListView (défini sur CHOICE_MODE_SINGLE) J'ai un SimpleCursorAdapter qui remplit mon ListView. Maintenant, je travaille sur la sélection.Problème de sélection Android dans ListView

serviceListView.setAdapter(
    new SimpleCursorAdapter(this, R.layout.service_listitem, cursor, new String[] { "name" }, new int[] { R.id.service_name }) { 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      final View renderer = super.getView(position, convertView, parent); 
      if (position == newSelectedPosition) { 
       renderer.setBackgroundResource(R.layout.list_view_layer_list); 
      } else { 
       renderer.setBackgroundResource(android.R.color.transparent); 
      } 
      return renderer; 
     } 
    } 
); 

Donc je veux quand je choisis une rangée ma disposition à appliquer. Cela fonctionne bien. Mais dans certains cas, quand je pousse pendant 2-3 secondes une ligne, puis faites glisser un peu et relâchez la ligne, j'obtiens 2 lignes sélectionnées. J'essaie plusieurs façons d'obtenir la sélection initiale, en écrasant OnTouchListener, OnScrollListener, OnLongClickListener. Aucun résultat. Toute aide est la bienvenue Merci

Répondre

0

Je quitte cette implémentation. Je vais essayer de "simuler" ListView en utilisant un ScrollView avec TextView-s pour chaque ligne

+0

Cela fonctionne très bien. Pour les autres utilisateurs qui ont le même problème, essayez de remplacer ListView par un ScrollView rempli de TextViews. – tinti

0

Avez-vous essayé d'appeler notifyDataSetChanged() sur votre adaptateur après que la sélection a été modifiée? Cela devrait entraîner le rebond de toutes les lignes, et toutes les vues (à l'exception de la vue sélectionnée) pour revenir à l'arrière-plan transparent.

+0

Merci pour votre aide ... mais ne fonctionne pas. D'autres idées? – tinti

+0

Désolé, j'aurais pensé que cela fonctionnerait. Je ne peux pas voir comment la même position serait liée deux fois. Je ne suis pas sûr si l'appel à notifyDataSetChanged lorsque votre doigt est levé de l'écran aiderait. Peut-être essayer d'ajouter quelques journaux à la fonction sélectionnée et la fonction de liaison peut vous aider à voir ce qui se passe. –

Questions connexes