android – OnItemClickListener在适配器包含带onClickListener的按钮时无法正常工作
作者:互联网
我为ListView实现了一个适配器,它扩展了BaseAdapter.
我的列表项包含每个按钮都有OnClickListener的按钮.
在为每个项目添加OnclickLister之后,列表的OnItemClickListener停止工作.
怎么修好?
代码
在我的活动中 –
ListView lv = (ListView) findViewById(R.id.list);
lv.setTextFilterEnabled(true);
lv.setItemsCanFocus(true);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String debString = "position = " + position + " id = " + id;
Log.d(TAG, debString);
Toast.makeText(getApplicationContext(), debString, Toast.LENGTH_SHORT).show();
Contact selectedContact = dataVector.elementAt(position);
Bundle bundle = new Bundle();
bundle.putInt(Constants.POSITION, position);
bundle.putString(Constants.NAME, selectedContact.getName());
bundle.putString(Constants.MDN, selectedContact.getMdn());
bundle.putString(Constants.STATUS, selectedContact.getStatus());
String filePath = null;
if(contactsImagesProperties != null || !Utils.isNullOrEmpty((String) contactsImagesProperties.get(selectedContact.getMdn()))) {
filePath = (String) contactsImagesProperties.get(selectedContact.getMdn());
}
bundle.putString(Constants.IMAGE, filePath);
Intent intent = new Intent(context, ChildDisplayActivity.class);
intent.putExtras(bundle);
getParent().startActivityForResult(intent, 10);
}
在getView()的myBaseAdapter中
bitmap = Bitmap.createScaledBitmap(bitmap, Constants.CHILD_ICON_WIDTH, Constants.CHILD_ICON_HEIGHT, false);
imageView.setImageBitmap(bitmap);
statusView.setText(Constants.StatusCodeHandler.getStatusDesc(dataVector.elementAt(position).getStatus(), context));
ImageButton imageButton = (ImageButton) view.findViewById(viewIds[3]);
imageButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Bundle bundle = new Bundle();
bundle.putInt(Constants.ACTION, Constants.CONTACT_LOCATION_CODE);
bundle.putString(Constants.MDN, dataVector.elementAt(position).getMdn());
MainActivity.bundle = bundle;
TabActivity mainActivity = (TabActivity) ((UsersListActivity)context).getParent().getParent();
TabHost tabHost = mainActivity.getTabHost();
tabHost.setCurrentTab(Constants.MAP_TAB_INDEX);
}
});
在myListRaw.xml中 –
<ImageView android:src="@drawable/icon"
android:id="@+id/childListImageView"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:focusable="false"
android:clickable="false"
android:focusableInTouchMode="false"
android:layout_alignParentRight="true"/>
<TextView android:id="@+id/childListTextView"
android:layout_marginRight="5dp"
android:layout_width="wrap_content"
android:text="TextView"
android:layout_height="wrap_content"
android:focusable="false"
android:clickable="false"
android:focusableInTouchMode="false"
android:layout_toLeftOf="@+id/childListImageView"
android:layout_centerVertical="true"/>
<TextView android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:text="Child Status"
android:id="@+id/childListStatus"
android:layout_width="wrap_content"
android:layout_toLeftOf="@+id/childListTextView"
android:layout_marginRight="15dp"
android:focusable="false"
android:clickable="false"
android:focusableInTouchMode="false"
android:layout_centerVertical="true"/>
<ImageButton android:id="@+id/childListButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Loc"
android:layout_marginTop="5dp"
android:layout_alignParentLeft="true"
android:focusable="false"
android:clickable="false"
android:focusableInTouchMode="false"/>
解决方法:
如果将行的部分设置为可聚焦(android:focusable =“true”),则为ListView设置的OnItemClickListener不响应.看看这个
标签:android,listview,baseadapter,onitemclicklistener 来源: https://codeday.me/bug/20190614/1236595.html