comment définir le mode de choix unique pour listview avec des images
J'ai une listview avec l'image.Lorsque je sélectionne chaque élément de l'image change à cliqué sur l'image.Mais lorsque je sélectionne un autre élément à la fois des images de changements.Je veux seulement l'élément sélectionné pour modifier l'image.il a pour fonction, comme un bouton radio avec un seul mode de choix.svp aider.
public class ProvierActivity extends Activity {
private String text[] = { "BroadStripe-Cable (Seattle)", "BroadStripe-Digital (Seattle)",
"BroadStripe-Cable (Seattle)", "Comcast king county south)", "BroadStripe-Cable (Seattle)",
"Comcast king county south", "BroadStripe-Digital (Seattle)", "BroadStripe-Digital (Seattle)",
"BroadStripe-Cable (Seattle)", "Comcast king county south" };
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final ListView list = (ListView) findViewById(R.id.listview_id);
list.setAdapter(new ArrayAdapter<String>(this, R.layout.list,
R.id.title, text));
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View view,
int position, long arg3) {
//TODO Auto-generated method stub
if (view.findViewById(R.id.img).getVisibility() == ImageView.VISIBLE) {
ImageView icon = (ImageView) view.findViewById(R.id.img);
icon.setImageResource(R.drawable.checked);
}
}
});
}
}
Cochez cette référence pour l'avenir youtube.com/watch?v=s4JwU28VMko
OriginalL'auteur preeti | 2011-09-14
Vous devez vous connecter pour publier un commentaire.
La solution recommandée ici est de s'appuyer sur construit-dans la vue liste de sélection prennent en charge la spécification unique mode de choix:
Alors vous devriez laisser votre élément de la liste à mettre en œuvre pour mettre en œuvre Checkable de l'interface; qui nécessite un certain degré de personnalisation de la vue racine de votre mise en page. En supposant qu'il a LinearLayout comme une racine, une mise en œuvre peut ressembler à:
Votre fichier de mise en page doit être mis à jour pour faire référence à MyListItem classe au lieu de LinearLayout trop, bien sûr.
Cela peut être un peu difficile d'approche, mais il a des avantages comme la restauration des éléments cochés automatiquement lorsque l'activité est recréé.
Une autre option est d'utiliser la liste de choix du mode de nouveau et remplacer la carte getView de savoir si l'élément est vérifié et à l'image de mise à jour en conséquence:
Cependant cette version a quelques problèmes de performances - findViewById et setImageResource sont relativement de temps de sorte que vous devriez envisager d'utiliser une partie de cache. Je vous recommande de regarder "Le monde de la ListView" vidéo d'apprendre quelques astuces très utiles à propos de ce widget.
Cette dernière approche a également des liens de l'adaptateur à la listview qui introduit inutile de couplage.
+1 Fonctionne comme un charme. Merci pour le partage.
Belle réponse. Très élégante solution. Merci!
jolie solution sympa 🙂 Un doute : Dans la première méthode, pourquoi êtes-vous vérifier la visibilité dans le
setChecked()
méthode :if (icon.getVisibility() == View.VISIBLE) {
?OriginalL'auteur Darth Beleg
setChoiceMode
selon vos besoins.Ensemble de votre sélection comme arrière-plan.
FYI:
android:background="@drawable/your_selector"
sur l'élémentLinearLayout
au lieu d'utiliserandroid:list_selector="@drawable/your_selector"
sur leListView
.OriginalL'auteur Daniel De León