Je ne peux pas cliquer sur le ListView dans android?
J'ai fait une application à l'aide de synchronisation des contacts. Je liste les suivantes infos de contact avec photo, nom et nombre. J'ai réussi à faire la liste de toutes ces choses dans une coutume ListView, mais je ne peux pas cliquer sur le ListView. Il ressemble verrouillé, Impossible de cliquer dessus.
Mais j'ai fait une même procédure pour une autre activité. L'aide personnalisée ListView mais je peux sur ce point de vue et il fonctionne très bien.
Quel est le problème? voici mon exemple de codage:
ListView settingsList = (ListView) findViewById(R.id.manage_track_listView);
ArrayList<ContactList> MySettingsList = new ArrayList<ContactList>();
ContactList setting1 = new ContactList("contact name 1", "Number 1", null);
ContactList setting2 = new ContactList("contact name 2", "Number 2", null);
ContactList setting3 = new ContactList("contact name 3", "Number 3", null);
MySettingsList.add(setting1);
MySettingsList.add(setting2);
MySettingsList.add(setting3);
ContactList list[] = new ContactList[MySettingsList.size()];
for(int i=0;i<MySettingsList.size();i++) {
ContactList mySettings = MySettingsList.get(i);
list[i] = new ContactList(mySettings.getName(), mySettings.getNumber(), mySettings.getImageIcon());
}
ContactListAdapter adapter = new ContactListAdapter(this, R.layout.manage_track_list_custom_view, list);
settingsList.setAdapter(adapter);
System.out.println("before listener");
settingsList.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
//TODO Auto-generated method stub
System.out.println("Clicked " + position);
}
});
System.out.println("after listener");
Ici ContactList est une classe qui a un nom de contact, nombre, et byte[] pour imageBlob. Si l'image est nulle, je définir la valeur par défaut ic_launcher comme image de contact. La classe d'adaptateur est:
public class ContactListAdapter extends ArrayAdapter<ContactList> {
Context context;
int layoutResourceId;
ContactList objects[] = null;
View row;
public ContactListAdapter(Context context, int layoutResourceId, ContactList[] objects) {
super(context, layoutResourceId, objects);
//TODO Auto-generated constructor stub
this.context = context;
this.layoutResourceId = layoutResourceId;
this.objects = objects;
System.out.println(objects[1].getName());
System.out.println(objects[1].getNumber());
System.out.println(objects[1].getImageIcon());
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
//TODO Auto-generated method stub
row = convertView;
final ContactListHolder holder;
if ( row == null ) {
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new ContactListHolder();
holder.image = (ImageView) row.findViewById(R.id.contactImage);
holder.name = (TextView) row.findViewById(R.id.contactName);
holder.number = (TextView) row.findViewById(R.id.contactNumber);
holder.check = (CheckBox) row.findViewById(R.id.selectedContact);
row.setTag(holder);
} else {
holder = (ContactListHolder)row.getTag();
}
ContactList contact = objects[position];
if(contact.imageIcon != null) {
Bitmap imgBitmap = BitmapFactory.decodeByteArray(contact.imageIcon, 0, contact.imageIcon.length);
holder.image.setImageBitmap(imgBitmap);
} else {
holder.image.setImageResource(R.drawable.ic_launcher);
}
holder.name.setText(contact.name);
holder.number.setText(contact.number);
holder.check.setChecked(objects[position].isSelected());
return row;
}
static class ContactListHolder {
ImageView image;
TextView name;
TextView number;
CheckBox check;
}
}
J'Ai plus de 100 contacts donc ajouté à seulement 3 objets. Dans cette liste de contacts que j'ai réussi à recevoir un contact de l'image, le nom, le numéro.
Quel est le problème de la ListView est incapable de clic? J'espère que l'une quelconque de u va me guider. Merci à l'avance.
Merci à tous. maintenant obtenu le résultat par le simple ajout de android:focusable="false"
à mes enfants tous les points de vue. merci pour ur guidages.
OriginalL'auteur Amarnath | 2012-06-26
Vous devez vous connecter pour publier un commentaire.
en Vues imbriquées, à la vue enfant obtient toujours tous les événements tactiles en premier. si vous voulez la vue parent (dans votre cas, la liste de ligne), pour obtenir un événement de touche, vous devez retourner faux sur l'enfant d'événements ou de les mettre à
android:clickable="false"
dans le manifeste.Merci ami maintenant ça fonctionne.
si cela fonctionne, n'hésitez pas à accepter la réponse
OriginalL'auteur thepoosh
ajouter
et
pour chaque enfant de voir comme imageview,textview,case à cocher, etc... de votre ligne de la disposition des moyens en manage_track_list_custom_view.xml
OriginalL'auteur Khan
Je pense que vous avez à régler l'ensemble de vos cliquable choses par exemple. des cases à cocher, des boutons etc. ne pas focusable(dans la classe d'adaptateur).
OriginalL'auteur Yogesh Somani
Essayez ceci:
Lorsque vous ajoutez de la liste, appelez
Ont un look ici pour plus d'info.
OriginalL'auteur Behzad Momahed Heravi
Vous pouvez définir onclick listner à la Vue ligne de ContactListAdapter classe.
OriginalL'auteur Chrishan
J'ai le même problème quand je ne peux pas cliquer sur les autres partie d'un élément dans la vue liste, ne peuvent tout simplement cliquez dans textview ou imageview à l'intérieur de cet élément. J'ai donc mis mon textview:
mon article comme ceci:
Et en cliquant sur l'événement a bien fonctionné parce que je clique sur le textview. Espérons, aidera quelqu'un a le même problème.
OriginalL'auteur nobjta_9x_tq