Hice una aplicación usando sincronización de contactos. Enumero la siguiente información de contacto con foto, nombre y número. Listo con éxito todas esas cosas en un ListView personalizado, pero no puedo hacer clic en el ListView. Parece bloqueado, no se puede hacer clic en él.No puedo hacer clic en ListView en Android?
Pero hice el mismo procedimiento para otra actividad. Usando personalizado, ListView pero puedo hacer clic en esta vista y funciona bien.
¿Cuál es el problema? aquí está mi codificación de ejemplo:
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");
Aquí lista de contactos es una clase que no tiene nombre, el número, y el byte [] para imageBlob. Si la imagen es nula, configuro el ic_launcher predeterminado como una imagen de contacto. La clase de adaptador es:
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;
}
}
tengo más de 100 contactos por lo que añaden sólo 3 objetos. En esta lista de contactos recibo con éxito la imagen de contacto, nombre, número.
¿Cuál es el problema ListView no puede hacer clic? Espero que alguno de ustedes me guíe. Gracias por adelantado.
Gracias a todos. ahora obtuve el resultado al solo agregar android:focusable="false"
en mis vistas de todos los elementos secundarios. gracias por tus guidings.
este método no funciona? cualquier otra solución – Amarnath
Gracias amigo ahora funciona. – Amarnath
si funciona, no dude en aceptar la respuesta – thepoosh