开发者

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

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜