Monday 21 November 2016

Expandable List Example

Expandable List Example



MainActivity.java

package com.mihir.expandablelist;



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("expandable header 1");

      listDataHeader.add("expandable header 2");

      listDataHeader.add("expandable header 3");



      // Adding child data

      List<String> exphead1 = new ArrayList<String>();

      exphead1.add("item a");

      exphead1.add("item b");

      exphead1.add("item c");

      exphead1.add("item d");

      



      List<String> exphead2 = new ArrayList<String>();

      exphead2.add("item 1");

      exphead2.add("item 2");

      exphead2.add("item 3");

      exphead2.add("item 4");

      

      List<String> exphead3 = new ArrayList<String>();

      exphead3.add("item q");

      exphead3.add("item w");

      exphead3.add("item e");

      exphead3.add("item r");

      exphead3.add("item t");

      exphead3.add("item y");



      listDataChild.put(listDataHeader.get(0), exphead1); // Header, Child data

      listDataChild.put(listDataHeader.get(1), exphead2);

      listDataChild.put(listDataHeader.get(2), exphead3);

   }

}

ExpandableListAdapter.java

package com.mihir.expandablelist;



import java.util.HashMap;

import java.util.List;

import android.content.Context;

import android.graphics.Typeface;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseExpandableListAdapter;

import android.widget.TextView;



public class ExpandableListAdapter extends BaseExpandableListAdapter {



   private Context _context;

   private List<String> _listDataHeader; // header titles

   // child data in format of header title, child title

   private HashMap<String, List<String>> _listDataChild;



   public ExpandableListAdapter(Context context, List<String> listDataHeader,

         HashMap<String, List<String>> listChildData) {

      this._context = context;

      this._listDataHeader = listDataHeader;

      this._listDataChild = listChildData;

   }



   @Override

   public Object getChild(int groupPosition, int childPosititon) {

      return this._listDataChild.get(this._listDataHeader.get(groupPosition))

            .get(childPosititon);

   }



   @Override

   public long getChildId(int groupPosition, int childPosition) {

      return childPosition;

   }



   @Override

   public View getChildView(int groupPosition, final 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 int getChildrenCount(int groupPosition) {

      return this._listDataChild.get(this._listDataHeader.get(groupPosition))

            .size();

   }



   @Override

   public Object getGroup(int groupPosition) {

      return this._listDataHeader.get(groupPosition);

   }



   @Override

   public int getGroupCount() {

      return this._listDataHeader.size();

   }



   @Override

   public long getGroupId(int groupPosition) {

      return groupPosition;

   }



   @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 boolean hasStableIds() {

      return false;

   }



   @Override

   public boolean isChildSelectable(int groupPosition, int childPosition) {

      return true;

   }



}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:orientation="vertical"

    android:background="#f4f4f4" >



    <ExpandableListView

        android:id="@+id/lvExp"

        android:layout_height="match_parent"

        android:layout_width="match_parent"

        android:cacheColorHint="#000000" />



</LinearLayout>

list_group.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:orientation="vertical"

    android:padding="8dp" 

    android:background="#000000">



    <TextView

        android:id="@+id/lblListHeader"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:paddingLeft="?android:attr/expandableListPreferredItemPaddingLeft"

        android:textSize="17dp"

        android:textColor="#ffffff" />



</LinearLayout>
list_item.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="55dip"

    android:orientation="vertical" >



    <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:textColor="#000000"

        android:paddingLeft="?android:attr/expandableListPreferredChildPaddingLeft" />



</LinearLayout>

No comments:

Post a Comment

CCAvenue Payment Gateway Android Integration

CCAvenue Payment Gateway Android Integration CCAvenue payment gateway android integration using PHP RSA and Response Handling. An...