2012-03-22 8 views
45

मैं एक एंड्रॉइड इंटरफ़ेस प्रोग्राम करने की कोशिश कर रहा हूं जो कि एक तरफ विस्तारणीय सूची और दूसरी तरफ एक टुकड़ा का उपयोग करता है ताकि मैं विस्तारणीय सूची के बच्चों पर क्लिक करके विभिन्न संसाधन लोड कर सकूं। लेकिन दुर्भाग्य से मुझे इस सूची के बारे में कहीं भी कोई अच्छा ट्यूटोरियल नहीं मिल रहा है। हां मैंने एपीआई डेमो में देखा है और मैंने बेसएक्सपैंडेबल लिस्ट एडाप्टर के साथ एक सामान्य सूची बनाई है लेकिन फिर भी, उन सूची को अच्छी तरह से समझना अच्छा है कि यह एक अच्छा ट्यूटोरियल के बिना कठिन है, क्या आपके पास कोई अच्छा या जानकारी है जिसे मैं देख सकता हूं?एंड्रॉइड एक्सपेंडेबल लिस्ट व्यू - एक ट्यूटोरियल की तलाश

+0

मैं विश्वास नहीं कर सकता इस के रूप में "रचनात्मक नहीं" चिह्नित किया गया था! यह बहुत रचनात्मक था, और जवाब बहुत उपयोगी! इस प्रश्न को पोस्ट करने के लिए धन्यवाद, DeX03। –

उत्तर

50

देता है आप का अनुगमन करते हुए विस्तार योग्य सूची दृश्य के उदाहरण काम कर पा सकते हैं:

बच्चे पर क्लिक करने के लिए, आप इस तरह से संभाल सकते हैं।

getExpandableListView().setOnChildClickListener(new OnChildClickListener() {     
    public boolean onChildClick(ExpandableListView parent, View v, 
       int groupPosition, int childPosition, long id) { 
     // your code... 
    } 
}); 

आशा है कि यह आपकी मदद करेगा। धन्यवाद ..

+0

लेकिन यह उन गतिविधियों के लिए समान तरीके से काम नहीं करता है जो विस्तारणीय लिस्टएक्टिविटी का विस्तार नहीं करते हैं क्योंकि मेरे पास यही है, मैं उसमें काम करने के लिए कैसे तय करूं? – DeX03

+0

कभी नहीं मैंने इसे ठीक किया, बहुत मदद की! – DeX03

58

आइटम सूची बनाएं

List<ParentItem> itemList = new ArrayList<ParentItem>(); 

ParentItem parent1 = new ParentItem(); 
parent1.getChildItemList().add(new ChildItem()); 
parent1.getChildItemList().add(new ChildItem()); 
parent1.getChildItemList().add(new ChildItem()); 

ParentItem parent2 = new ParentItem(); 
parent2.getChildItemList().add(new ChildItem()); 
parent2.getChildItemList().add(new ChildItem()); 
parent2.getChildItemList().add(new ChildItem()); 

itemList.add(parent1); 
itemList.add(parent2); 

ExpandableListViewAdapter adapter = new ExpandableListViewAdapter(context, itemList); 

डाटा ऑब्जेक्ट्स

public class ParentItem { 

     private List<ChildItem> childItemList; 

     public ParentItem() { 
       childItemList = new ArrayList<ChildItem>(); 
     } 

     public List<ChildItem> getChildItemList() { 
       return childItemList; 
     } 
} 

public class ChildItem { 
     // filll with your data 
} 

एडाप्टर

public class ExpandableListViewAdapter extends BaseExpandableListAdapter { 

     private static final class ViewHolder { 
       TextView textLabel; 
     } 

     private final List<ParentItem> itemList; 
     private final LayoutInflater inflater; 

     public ExpandableListViewAdapter(Context context, List<ParentItem> itemList) { 
       this.inflater = LayoutInflater.from(context); 
       this.itemList = itemList; 
     } 

     @Override 
     public ChildItem getChild(int groupPosition, int childPosition) { 

       return itemList.get(groupPosition).getChildItemList().get(childPosition); 
     } 

     @Override 
     public long getChildId(int groupPosition, int childPosition) { 
       return childPosition; 
     } 

     @Override 
     public int getChildrenCount(int groupPosition) { 
       return itemList.get(groupPosition).getChildItemList().size(); 
     } 

     @Override 
     public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, 
           final ViewGroup parent) { 
       View resultView = convertView; 
       ViewHolder holder; 


       if (resultView == null) { 

         resultView = inflater.inflate(android.R.layout.test_list_item, null); //TODO change layout id 
         holder = new ViewHolder(); 
         holder.textLabel = (TextView) resultView.findViewById(android.R.id.title); //TODO change view id 
         resultView.setTag(holder); 
       } else { 
         holder = (ViewHolder) resultView.getTag(); 
       } 

       final ChildItem item = getChild(groupPosition, childPosition); 

       holder.textLabel.setText(item.toString()); 

       return resultView; 
     } 

     @Override 
     public ParentItem getGroup(int groupPosition) { 
       return itemList.get(groupPosition); 
     } 

     @Override 
     public int getGroupCount() { 
       return itemList.size(); 
     } 

     @Override 
     public long getGroupId(final int groupPosition) { 
       return groupPosition; 
     } 

     @Override 
     public View getGroupView(int groupPosition, boolean isExpanded, View theConvertView, ViewGroup parent) { 
       View resultView = theConvertView; 
       ViewHolder holder; 

       if (resultView == null) { 
         resultView = inflater.inflate(android.R.layout.test_list_item, null); //TODO change layout id 
         holder = new ViewHolder(); 
         holder.textLabel = (TextView) resultView.findViewById(android.R.id.title); //TODO change view id 
         resultView.setTag(holder); 
       } else { 
         holder = (ViewHolder) resultView.getTag(); 
       } 

       final ParentItem item = getGroup(groupPosition); 

       holder.textLabel.setText(item.toString()); 

       return resultView; 
     } 

     @Override 
     public boolean hasStableIds() { 
       return true; 
     } 

     @Override 
     public boolean isChildSelectable(int groupPosition, int childPosition) { 
       return true; 
     } 

} 

आप

============================== 
+Parent 1 
============================== 
-child 1.1 
============================== 
-child 1.2 
============================== 
-child 1.3 
============================== 
+Parent 2 
============================== 
-child 2.1 
============================== 
-child 2.2 
============================== 
-child 2.3 
============================== 
+1

लेकिन, मैं सूचियों के बच्चों पर क्लिक ईवेंट कैसे संभाल सकता हूं? कारण यह है कि मैंने पाया है कि सभी ट्यूटोरियल के साथ मुख्य समस्या है – DeX03

+0

'सेमी कॉलन (;) 'गायब' आइटम सूची = नया ऐरेलिस्ट () ' –

+1

मुझे शून्य' holder.textLabel.setText (item.toString() मिल रहा है); ', यह कैसे तय किया? –

1

इस तरह से आप की घटनाओं को संभाल कर सकते हैं:

getExpandableListView().setOnChildClickListener(new OnChildClickListener() 
{    
    public boolean onChildClick(ExpandableListView parent, 
     View v, int groupPosition, int childPosition, long id) 
    { 
     // your code... 
    } 
} 
+2

अप्रासंगिक उत्तर .... –

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