में नेस्टेड सूचीदृश्य आइटम नियंत्रण पर काम नहीं करती है मेरे पास 2 पॉपअप हैं। पहले पॉपअप पर मेरे पास चुनिंदा वस्तुओं के साथ ListView
है। जब मैं पहली सूची से आइटम पर क्लिक करता हूं, तो दूसरा पॉपअप प्रकट होता है, जिसमें ListView
भी चुनने के विकल्प होते हैं।ऑनक्लिक घटना एंड्रॉइड
मैं कस्टम View
के रूप में पहली सूची दृश्य आइटम को क्रियान्वित किया है और देखने निर्माता के अंदर ही क्लिक की सदस्यता, उस तरह:
class CustomListItem extends RelativeLayout{
public CustomListItem(){
...
//inflating stuff there
((Button)findViewById(R.id.listItemButton)).setOnClickListener(
//This code not working as expected, but then could fire a lot of times
v -> System.out.println("item clicked");
);
}
}
जब मैंने पहली बार onClick
हैंडलर आग के लिए पहले संवाद खोलने की उम्मीद है और दूसरी पॉपअप से प्रकट होता है। लेकिन जब मैं दूसरा पॉपअप बंद करता हूं और पॉपअप के लिए Dialog.dismiss()
पर कॉल करता हूं) पहले पॉपअप पर onClick
हैंडलर पहली सूचीदृश्य पर काम करना बंद कर देता है। कुछ अन्य inetersting चीजें हैं:
onTouch
अभी भी काम कर (action=ACTION_DOWN
औरaction=ACTION_UP
के लिए कहा जाता है) है सूची दृश्य आइटम के लिए श्रोता;- जब मैं सूचीदृश्य
onItemClickListener
के लिए सेट करता हूं तो इसे हमेशा कहा जाता है (पहली बार पॉपअप खोला गया था और जब हम इसे वापस लौटते हैं); - जब मैं सूची दृश्य में आइटम पर कई बार क्लिक करता हूं कभी-कभी
onClick
होता है और इसके बाद इसे कई बार कहा जाता है क्योंकि मैंने पर क्लिक किया था।
क्या आपके पास कोई विचार है कि समस्या का कारण क्या हो सकता है?
अद्यतन
लगता एडाप्टर के अंदर getView
विधि के साथ एक समस्या है। क्यों यह नहीं है
@Override
public View getView(int position, View view, ViewGroup parent) {
if (view == null)
{
view = LayoutInflater.from(context).inflate(R.layout.list_view_item, null);
}
view.setOnClickListener(v -> {
v -> System.out.println("item clicked");
});
return view;
}
: नीचे सब कुछ काम करता है
@Override
public View getView(int position, View view, ViewGroup parent) {
if (!constructedViewCache.containsKey(position)) {
constructedViewCache.put(position, new CustomListItem());
}
return constructedViewCache.get(position);
}
जब मैं कोड के लिए इस कोड को बदल दिया: मैं इसे अंदर एक कस्टम सूची आइटम नियंत्रण बनाने के लिए (या कैश से इसे पाने के) के लिए कोशिश की है new CustomListItem()
के साथ दृश्य बनाने के लिए संभव है? या यदि यह संभव है तो मुझे यह कैसे करना चाहिए?
हूँ मैं सही ढंग से समझ, कि onclick नहीं ठीक से काम किया, लेकिन अगर आप कई बार क्लिक करने, मान लें कि 20-30 यह हो सकता है: वहाँ जो आइटम एक ही लेआउट और गतिविधि के रूप में एडाप्टर की सूची उपयोग कर रहा है कस्टम DialogFragment का कोड है आग और ऑनक्लिक के लिए उस कोड के बाद 20-30 बार निष्पादित किया जाएगा? –
क्या आप अधिक कोड साझा कर सकते हैं? –
@ vovaxo पूरा कोड बहुत जटिल है। कोड का कौन सा हिस्सा आपके लिए उपयोगी हो सकता है? – Natasha