ฉันหวังว่าฉันจะสามารถช่วยได้ที่นี่ ฉันคิดว่าคุณมีเค้าโครงที่กำหนดเองสำหรับรายการ listView และเค้าโครงนี้ประกอบด้วยปุ่มและมุมมองอื่น ๆ เช่น TextView, ImageView หรืออะไรก็ตาม ตอนนี้คุณต้องการให้เหตุการณ์ต่างๆเริ่มขึ้นเมื่อคลิกปุ่มและเหตุการณ์ที่แตกต่างกันเกิดขึ้นกับทุกสิ่งที่คลิก 
คุณสามารถทำได้โดยไม่ต้องใช้ onListItemClick () ของ ListActivity ของคุณ 
นี่คือสิ่งที่คุณต้องทำ:
คุณกำลังใช้เลย์เอาต์แบบกำหนดเองดังนั้นคุณอาจกำลังลบล้างเมธอด getView () จากอะแดปเตอร์ที่คุณกำหนดเอง เคล็ดลับคือการตั้งค่าผู้ฟังที่แตกต่างกันสำหรับปุ่มของคุณและแตกต่างกันสำหรับมุมมองทั้งหมด (แถวของคุณ) ดูตัวอย่าง:
private class MyAdapter extends ArrayAdapter<String> implements OnClickListener {
    public MyAdapter(Context context, int resource, int textViewResourceId,
            List<String> objects) {
        super(context, resource, textViewResourceId, objects);
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        String text = getItem(position);
        if (null == convertView) {
            convertView = mInflater.inflate(R.layout.custom_row, null);
        }
        
        Button btn = (Button) convertView.findViewById(R.id.button);
        btn.setOnClickListener(this);
        
        TextView tv = (TextView) convertView.findViewById(R.id.text);
        tv.setText(text);
        
        convertView.setOnClickListener(new OnItemClickListener(position));
        return convertView;
    }
    @Override
    public void onClick(View v) {
        Log.v(TAG, "Row button clicked");
    }
}
คลาส OnItemClickListener ของคุณสามารถประกาศได้ดังนี้:
private class OnItemClickListener implements OnClickListener{       
    private int mPosition;
    OnItemClickListener(int position){
        mPosition = position;
    }
    @Override
    public void onClick(View arg0) {
        Log.v(TAG, "onItemClick at position" + mPosition);          
    }       
}
แน่นอนว่าคุณอาจจะต้องเพิ่มพารามิเตอร์ให้กับตัวสร้าง OnItemClickListener 
และสิ่งหนึ่งที่สำคัญ - การใช้งาน getView ที่แสดงด้านบนนั้นค่อนข้างน่าเกลียดโดยปกติคุณควรใช้รูปแบบ ViewHolder เพื่อหลีกเลี่ยงการเรียก findViewById .. แต่คุณอาจรู้อยู่แล้ว 
ไฟล์ custom_row.xml ของฉันคือ RelativeLayout พร้อมด้วย Button of id "button", TextView ของ id "text" และ ImageView ของ id "image" - เพื่อให้ทุกอย่างชัดเจน 
 
ความนับถือ!