OnListItemclick ต้องการตอบสนองเมื่อกดปุ่มเท่านั้น

ฉันมี listview พร้อมอะแดปเตอร์แบบกำหนดเองและใช้งาน onListItemClick ฉันมีส่วนประกอบบางอย่างสำหรับแต่ละแถว และเมื่อคลิกที่บางอย่างในแถว จะเป็นการเปิดกิจกรรม ฉันสงสัยว่าฉันจะตั้งค่านั้นได้อย่างไรเฉพาะเมื่อคุณคลิกปุ่มที่คุณเปิดกิจกรรมและไม่ใช่เมื่อสุ่มกดในแถว ?หรือจะดีกว่าถ้าตั้งค่า onClick ในอะแดปเตอร์สำหรับแต่ละปุ่ม

ขยาย ListActivity :

@Override
protected void onListItemClick(ListView l, View v, int pos, long id) {
    // TODO Auto-generated method stub
    super.onListItemClick(l, v, pos, id);

            Intent i = new Intent(LevelMenu.this,AreaMenu.class);
            i.putExtra("level_value", (pos+1));
            startActivity(i);



    }
}

ปุ่ม :

<Button
    android:id="@+id/level"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/unlock"
    android:layout_centerHorizontal="true"
    android:focusable="false"
    android:clickable="false"
    android:text="Play" />

รายการมุมมอง:

<ListView
    android:id="@android:id/list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:divider="@null"
    android:dividerHeight="15dp" />

person David    schedule 31.03.2013    source แหล่งที่มา
comment
สวัสดี ฉันคิดว่าสิ่งนี้จะช่วยคุณได้: stackoverflow.com/questions/10134569/   -  person Smartoop    schedule 01.04.2013
comment
ตั้งค่า onclick Listener สำหรับปุ่มของคุณใน customAdapter ใส่รหัสของคุณที่นั่น ..   -  person Pragnani    schedule 01.04.2013
comment
@David ปุ่มนั้นอยู่ในมุมมองรายการหรือไม่   -  person Yugesh    schedule 01.04.2013
comment
ไม่ มันอยู่ในเลย์เอาต์รายการของฉัน   -  person David    schedule 01.04.2013
comment
คุณสามารถตั้งค่า OnClickListener สำหรับปุ่มนั้นที่คุณพูดถึงในแถวของคุณและลบ onItemClickListener ออกจาก listView ของคุณ ดังนั้นมันจะเปิดตัวเฉพาะเมื่อคุณคลิกปุ่มเท่านั้น   -  person yahya    schedule 01.04.2013


คำตอบ (2)


หากไม่เห็นว่าคุณกำลังทำอะไรอยู่จริงๆ อาจเป็นเรื่องยาก สิ่งที่คุณสามารถทำได้ หากคุณมีเพียง onClick ทั่วไป คุณสามารถตรวจสอบเพื่อให้แน่ใจว่า View v คือ instanceof Button จากนั้นคว้ารหัส แท็ก หรือสิ่งอื่นใดจากปุ่มแล้วใช้สิ่งนั้นเพื่อเริ่มกิจกรรมของคุณ

public void onClick(View v){
    if( v instanceof Button){
        //a button was clicked!
    }
}
person ElefantPhace    schedule 31.03.2013

มีวิธีการ setEnable ใน baseAdapter หากคุณไม่ต้องการให้เรียก onItemClick ให้คืนค่า false จากสิ่งนี้

สำหรับกรณีของคุณ ให้ส่งค่า boolean หนึ่งค่าจาก onClick ของปุ่มของคุณ และขึ้นอยู่กับว่าคุณสามารถส่งคืน true จาก false ได้

person Ankit    schedule 01.04.2013