OnItemClickListener does not working properly when adapter contains a button with onClickListener
I have implemented an adapter for my ListView
which extends BaseAdapter.
My list items contain buttons that each of them have OnClickListener.
after adding OnclickLister for each item, the list's OnItemClickListener stoped working.
How can it be fixed?
the code
In my Activity -
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);
}
in myBaseAdapter in getView()
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);
}
});
in 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"
开发者_StackOverflow社区android:layout_alignParentLeft="true"
android:focusable="false"
android:clickable="false"
android:focusableInTouchMode="false"/>
If you set your parts of row as focusable (android:focusable="true") than OnItemClickListener for ListView doen not respond. Check it out
精彩评论