Expandable list view is used to group list data by categories. It has the capability of expanding and collapsing the groups when user touches header.
If you are not aware of list view before please refer to this tutorial Android ListView Tutorial
Let’s start by creating a new project..
//MainActivity.java
//MainActivity.java
package info.androidhive.expandablelistview; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.ExpandableListView; import android.widget.ExpandableListView.OnChildClickListener; import android.widget.ExpandableListView.OnGroupClickListener; import android.widget.ExpandableListView.OnGroupCollapseListener; import android.widget.ExpandableListView.OnGroupExpandListener; import android.widget.Toast; public class MainActivity extends Activity { ExpandableListAdapter listAdapter; ExpandableListView expListView; List<String> listDataHeader; HashMap<String, List<String>> listDataChild; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // get the listview expListView = (ExpandableListView) findViewById(R.id.lvExp); // preparing list data prepareListData(); listAdapter = new ExpandableListAdapter(this, listDataHeader, listDataChild); // setting list adapter expListView.setAdapter(listAdapter); // Listview Group click listener expListView.setOnGroupClickListener(new OnGroupClickListener() { @Override public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) { // Toast.makeText(getApplicationContext(), // "Group Clicked " + listDataHeader.get(groupPosition), // Toast.LENGTH_SHORT).show(); return false; } }); // Listview Group expanded listener expListView.setOnGroupExpandListener(new OnGroupExpandListener() { @Override public void onGroupExpand(int groupPosition) { Toast.makeText(getApplicationContext(), listDataHeader.get(groupPosition) + " Expanded", Toast.LENGTH_SHORT).show(); } }); // Listview Group collasped listener expListView.setOnGroupCollapseListener(new OnGroupCollapseListener() { @Override public void onGroupCollapse(int groupPosition) { Toast.makeText(getApplicationContext(), listDataHeader.get(groupPosition) + " Collapsed", Toast.LENGTH_SHORT).show(); } }); // Listview on child click listener expListView.setOnChildClickListener(new OnChildClickListener() { @Override public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { // TODO Auto-generated method stub Toast.makeText( getApplicationContext(), listDataHeader.get(groupPosition) + " : " + listDataChild.get( listDataHeader.get(groupPosition)).get( childPosition), Toast.LENGTH_SHORT) .show(); return false; } }); } /* * Preparing the list data */ private void prepareListData() { listDataHeader = new ArrayList<String>(); listDataChild = new HashMap<String, List<String>>(); // Adding child data listDataHeader.add("Phones & Tablets"); listDataHeader.add("Man's Fashion"); listDataHeader.add("Woman's Fashion"); listDataHeader.add("Coming Soon.."); // Adding child data List<String> phonetablets = new ArrayList<String>(); phonetablets.add("Samsung"); phonetablets.add("Apple"); phonetablets.add("TABLETS: Part II"); phonetablets.add("Samsung"); phonetablets.add("Apple"); phonetablets.add("Huawei"); List<String> manfashions = new ArrayList<String>(); manfashions.add("T-shirts"); manfashions.add("Shirts"); manfashions.add("Jackets & Coats"); manfashions.add("Windcheater"); manfashions.add("Hoodies"); manfashions.add("Sports Wear"); List<String> womanfashions = new ArrayList<String>(); womanfashions.add("shirts"); womanfashions.add("Windcheater"); womanfashions.add("Hoodies"); womanfashions.add("The Canyons"); womanfashions.add("Sports"); 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), phonetablets); // Header, Child data listDataChild.put(listDataHeader.get(1), manfashions); listDataChild.put(listDataHeader.get(2), womanfashions); listDataChild.put(listDataHeader.get(3), comingSoon); } }
Comments
Post a Comment