4

我已经为我实现了一个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"/>

4

1 回答 1

7

如果您将行的部分设置为可聚焦(android:focusable="true"),则 ListView 的 OnItemClickListener 不会响应。一探究竟

于 2011-07-06T08:23:05.503 回答