
但我对另一项活动做了同样的程序.使用自定义ListVIEw,但我可以单击此视图,它工作正常.
问题是什么?这是我的示例编码:
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"); 这里ContactList是一个类,它具有imageBlob的联系人姓名,号码和字节[].如果图像为空,我将默认ic_launcher设置为联系人图像.适配器类是:
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,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; }} 我有超过100个联系人,所以只添加了3个对象.在此联系人列表中,我成功收到联系人图片,姓名,电话号码.
ListVIEw无法单击的问题是什么?我希望你们中的任何一个人能指导我.提前致谢.
谢谢大家.现在通过在我的所有子视图中添加androID:focusable =“false”得到了结果.谢谢你的指导.
解决方法 在嵌套视图中,子视图始终首先获取所有触摸事件.如果你想要父视图(在你的情况下,ListVIEw行),要获得触摸事件,你必须在子事件上返回false或者在清单中将它们设置为androID:clickable =“false”. 总结以上是内存溢出为你收集整理的我无法在Android中单击ListView?全部内容,希望文章能够帮你解决我无法在Android中单击ListView?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)