2012-05-29 8 views
7

मैं एंड्रॉइड के लिए एक एप्लीकेशन विकसित कर रहा हूं।एक्सपेंडेबल लिस्ट व्यू में समूह आइटम के अंदर एक बटन कैसे डालें?

मैं ExpandableListView के समूह में एक बटन कैसे डाल सकता हूं?

बटन पर क्लिक करके समूह को खोलने या बंद करने के बजाय एक संवाद प्रदर्शित किया जाएगा। बटन के बाहर क्लिक करें, समूह को सामान्य रूप से खोलना और बंद करना चाहिए।

नीचे दी गई छवि से पता चलता है कि मैं कहां बटन डालना चाहता हूं।

http://img193.imageshack.us/img193/2060/expandablelistviewbutto.png

+0

यू अभी तक इस का समाधान करने में सक्षम थे? – modabeckham

उत्तर

0

मैं अपने खुद के ExpandableListView बनाया। मैंने घटक बनाने के लिए एक्सएमएल और कक्षाओं में लेआउट का इस्तेमाल किया।

और आश्चर्यजनक रूप से यह करना बहुत आसान था।

मानक विस्तारणीय लिस्ट व्यू से समझना बहुत आसान था क्योंकि मैंने सूची के प्रत्येक तत्व (सूची के लिए, समूह के लिए और वस्तुओं के लिए) के लिए एक कक्षा और एक लेआउट बनाया था। मानचित्रों की सूचियों की सूचियों के साथ गड़बड़ करने की कोई आवश्यकता नहीं थी, जो मेरी राय में व्यक्तित्व और कोड की पठनीयता को कम करता है।

इसके अतिरिक्त, सूची बेहद लचीला और अनुकूलन बन जाती है। मैं आसानी से रनटाइम पर समूहों और वस्तुओं को जोड़ और निकाल सकता हूं। अब मैं सूची की उपस्थिति और आंतरिक घटकों को स्वतंत्र रूप से संशोधित कर सकता हूं।

मैंने जो विस्तारित लिस्ट व्यू बनाया है वह मानक और अधिक के समान ही कर सकता है। बस यह नहीं बता सकता कि प्रदर्शन खराब था, लेकिन किसी भी दृश्य समस्या का ध्यान नहीं दिया।

+0

आपने बटन को कैसे रखा और इसे काम किया? मुझे यह समस्या है और मैं समाधान के साथ नहीं आ सकता http://stackoverflow.com/questions/11205052/button-in-a-row-in-expandablelistview – noloman

0

आप एक कस्टम एक्सएमएल एक बटन युक्त फ़ाइल के साथ groupView को बढ़ाने के लिए की जरूरत है इस एक (जैसे inflate_xml_groupview.xml) की तरह:

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/FrameLayoutGroupView" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 


    <Button 
     android:id="@+id/myButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="ButtonOfMyExpandableListGroupView" 
     android:visibility="visible" /> 

</FrameLayout> 

तो फिर तुम कि BaseExpandableListAdapter फैली एक कस्टम ExpandableListAdapter बना सकते हैं और पर बटन प्राप्त करने के लिए GetGroupView() विधि, इस तरह:

public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { 
     ViewHolder holder; 
     if (convertView == null) { 

     convertView = inflater.inflate(R.layout.inflate_xml_groupview, null); 
     holder = new ViewHolder(); 
     holder.Button = (Button) convertView.findViewById(R.id.myButton); 
     convertView.setTag(holder); 
     } else { 
     holder = (ViewHolder) convertView.getTag(); 
     } 
     holder.position = ListOfItems.get(groupPosition).getPosition(); 
     Button.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View arg0) { 
       Toast.makeText(getApplicationContext(), "Button " + groupPosition + " is clicked !", Toast.LENGTH_SHORT).show(); 
       // DO STUFF 
     } 
    }); 
} 

आशा है कि इससे मदद मिलती है।

19

एंड्रॉइड एक्सपेंडेबल लिस्ट व्यू समूह या बच्चे में कोई बटन हो सकता है।

सुनिश्चित करें कि बटन एडाप्टर में नीचे की तरह फोकस करने योग्य नहीं है।

editButton.setFocusable(false); 

इस समूह पर और group.parent अंदर बटन क्लिक करने के लिए मदद मिलेगी अलग

+0

हां यह जवाब होना चाहिए। –

+6

कोड में ऐसा करना महत्वपूर्ण है, एक्सएमएल नहीं। एक आकर्षण की तरह काम करता है, साझा करने के लिए धन्यवाद। –

+0

मेरे लिए एक ही समस्या है। हेडर लेआउट के साथ चेकबॉक्स .. विस्तार/ढहने नहीं। यह लाइन जोड़ने के बाद आकर्षण –

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^