2016-04-25 8 views
0

Erweiterbare Ansicht erstellt keine Liste aller Überschriften und der untergeordneten Elemente, nur eine Gruppenüberschrift wird ohne untergeordnete Elemente angezeigt, nur der Pfeil nach unten. Beim Klick wird nur der Pfeil angezeigt und sonst nichts.ExpandableListView zeigt nicht alle Überschriften und Kinder an

public class CategoryWise extends AppCompatActivity { 

ExpandableListAdapter expandableListAdapter; 
ExpandableListView expandableListView; 
List<String> listDataHeader; 
HashMap<String,List<String>> listDataChild; 
DataBaseClass db; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_category_wise); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    expandableListView = (ExpandableListView)findViewById(R.id.ExpandableCategory); 
    prepareListData(); 
    expandableListAdapter = new ExpandableListAdapter(this,listDataHeader,listDataChild); 
    expandableListView.setAdapter(expandableListAdapter); 


} 

public void prepareListData() 
{ 
    listDataHeader = new ArrayList<>(); 
    listDataChild = new HashMap<String, List<String>>(); 

    // Adding child data 
    listDataHeader.add("Top 250"); 
    listDataHeader.add("Now Showing"); 
    listDataHeader.add("Coming Soon.."); 

    // Adding child data 
    List<String> top250 = new ArrayList<String>(); 
    top250.add("The Shawshank Redemption"); 
    top250.add("The Godfather"); 
    top250.add("The Godfather: Part II"); 
    top250.add("Pulp Fiction"); 
    top250.add("The Good, the Bad and the Ugly"); 
    top250.add("The Dark Knight"); 
    top250.add("12 Angry Men"); 

    List<String> nowShowing = new ArrayList<String>(); 
    nowShowing.add("The Conjuring"); 
    nowShowing.add("Despicable Me 2"); 
    nowShowing.add("Turbo"); 
    nowShowing.add("Grown Ups 2"); 
    nowShowing.add("Red 2"); 
    nowShowing.add("The Wolverine"); 

    List<String> comingSoon = new ArrayList<String>(); 
    comingSoon.add("2 Guns"); 
    comingSoon.add("The Smurfs 2"); 
    comingSoon.add("The Spectacular Now"); 
    comingSoon.add("The Canyons"); 
    comingSoon.add("Europa Report"); 

    listDataChild.put(listDataHeader.get(0), top250); // Header, Child data 
    listDataChild.put(listDataHeader.get(1), nowShowing); 
    listDataChild.put(listDataHeader.get(2), comingSoon); 
    } 
} 

diese ExpandableListAdapter Klasse ist als

public class ExpandableListAdapter extends BaseExpandableListAdapter{ 

private Context _context; 
private List<String> _listDataHeader; 
private HashMap<String,List<String>> _listChildData; 

public ExpandableListAdapter(Context context, List<String> listDataHeader, 
          HashMap<String,List<String>> listChildData) 
{ 
    this._context = context; 
    this._listDataHeader = listDataHeader; 
    this._listChildData = listChildData; 

} 

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

@Override 
public int getChildrenCount(int groupPosition) { 
    return this._listChildData.get(this._listDataHeader.get(groupPosition)) 
      .size(); 
} 

@Override 
public Object getGroup(int groupPosition) { 
    return this._listDataHeader.get(groupPosition); 
} 

@Override 
public Object getChild(int groupPosition, int childPosition) { 
    return this._listChildData.get(this._listDataHeader.get(groupPosition)).get(childPosition); 
} 

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

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

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

@Override 
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { 

     String headerTitle = (String) getGroup(groupPosition); 
     if (convertView == null) { 
      LayoutInflater infalInflater = (LayoutInflater) this._context 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      convertView = infalInflater.inflate(R.layout.list_group, null); 
     } 

     TextView lblListHeader = (TextView) convertView 
       .findViewById(R.id.lblListHeader); 
     lblListHeader.setTypeface(null, Typeface.BOLD); 
     lblListHeader.setText(headerTitle); 

     return convertView; 
} 

@Override 
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { 


     final String childText = (String) getChild(groupPosition,childPosition); 

     if (convertView == null) { 
      LayoutInflater infalInflater = (LayoutInflater) this._context 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      convertView = infalInflater.inflate(R.layout.list_item, null); 
     } 

     TextView txtListChild = (TextView) convertView 
       .findViewById(R.id.lblListItem); 

     txtListChild.setText(childText); 
     return convertView; 
} 

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

folgt Wenn ich nicht in der Lage war, die Lösung zu finden, ich diesen Code versucht, aus here Bitte helfen.

Here is the screenshot for the reference

list_item.xml 
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<TextView 
    android:id="@+id/lblListItem" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:textSize="17dip" 
    android:paddingTop="5dp" 
    android:paddingBottom="5dp" 
    android:paddingLeft="?android:attr/expandableListPreferredChildPaddingLeft" /> 

</LinearLayout> 
+0

Können Sie mir Ihr Kind Artikel Ansicht (xml) –

+0

Ja sicher ... Ich bearbeitet die Frage @ HoàngVũNam –

+0

versuchen android zu ändern: layout_height = "match_parent"> –

Antwort

Verwandte Themen