Skip to main content

Expandable Listview Android example



Create New Android Project In Main Activity :

 package com.multilayerexpandable;  
 import java.util.ArrayList;  
 import android.app.ExpandableListActivity;  
 import android.content.Context;  
 import android.os.Bundle;  
 import android.view.LayoutInflater;  
 import android.view.View;  
 import android.widget.ExpandableListView;  
 import android.widget.ExpandableListView.OnChildClickListener;  
 import android.widget.Toast;  
 public class MainActivity extends ExpandableListActivity implements  
           OnChildClickListener {  
      @Override  
      public void onCreate(Bundle savedInstanceState) {  
           super.onCreate(savedInstanceState);  
           ExpandableListView expandbleLis = getExpandableListView();  
           expandbleLis.setDividerHeight(2);  
           expandbleLis.setGroupIndicator(null);  
           expandbleLis.setClickable(true);  
           setGroupData();  
           setChildGroupData();  
           NewAdapter mNewAdapter = new NewAdapter(groupItem, childItem);  
           mNewAdapter  
                     .setInflater(  
                               (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE),  
                               this);  
           getExpandableListView().setAdapter(mNewAdapter);  
           expandbleLis.setOnChildClickListener(this);  
      }  
      public void setGroupData() {  
           groupItem.add("Android");  
           groupItem.add("Extras");  
      }  
      ArrayList<String> groupItem = new ArrayList<String>();  
      ArrayList<Object> childItem = new ArrayList<Object>();  
      public void setChildGroupData() {  
           /**  
            * Add Data For Android 
            */  
           ArrayList<String> child = new ArrayList<String>();  
           child.add("Cupcake");  
           child.add("Donut");  
           child.add("Eclair");  
           child.add("Froyo");  
           child.add("Gingerbread");  
           child.add("Honeycomb");  
           child.add("Ice Cream Sandwich");  
           child.add("Jelly Bean");  
           childItem.add(child);  
           /**  
            * Add Data For Extras_  
            */  
           child = new ArrayList<String>();  
           child.add("Dj-Android");  
           child.add("Dhaval Sodha Parmar");  
           childItem.add(child);  
      }  
      @Override  
      public boolean onChildClick(ExpandableListView parent, View v,  
                int groupPosition, int childPosition, long id) {  
           Toast.makeText(MainActivity.this, "Clicked On Child",  
                     Toast.LENGTH_SHORT).show();  
           return true;  
      }  
 }  

Class NewAdapter.java

 package com.multilayerexpandable;  
 import java.util.ArrayList;  
 import android.app.Activity;  
 import android.view.LayoutInflater;  
 import android.view.View;  
 import android.view.View.OnClickListener;  
 import android.view.ViewGroup;  
 import android.widget.BaseExpandableListAdapter;  
 import android.widget.CheckedTextView;  
 import android.widget.ImageView;  
 import android.widget.TextView;  
 import android.widget.Toast;  
 @SuppressWarnings("unchecked")  
 public class NewAdapter extends BaseExpandableListAdapter {  
      public ArrayList<String> groupItem, tempChild;  
      public ArrayList<Object> Childtem = new ArrayList<Object>();  
      public LayoutInflater minflater;  
      public Activity activity;  
      public NewAdapter(ArrayList<String> grList, ArrayList<Object> childItem) {  
           groupItem = grList;  
           this.Childtem = childItem;  
      }  
      public void setInflater(LayoutInflater mInflater, Activity act) {  
           this.minflater = mInflater;  
           activity = act;  
      }  
      @Override  
      public Object getChild(int groupPosition, int childPosition) {  
           return null;  
      }  
      @Override  
      public long getChildId(int groupPosition, int childPosition) {  
           return 0;  
      }  
      @Override  
      public View getChildView(int groupPosition, final int childPosition,  
                boolean isLastChild, View convertView, ViewGroup parent) {  
           tempChild = (ArrayList<String>) Childtem.get(groupPosition);  
           TextView text = null;  
           ImageView img = null;  
           if (convertView == null) {  
                convertView = minflater.inflate(R.layout.childrow, null);  
           }  
           text = (TextView) convertView.findViewById(R.id.textView1);  
           img = (ImageView) convertView.findViewById(R.id.childImage);  
           text.setText(tempChild.get(childPosition));  
           if (childPosition == (tempChild.size() - 1)) {  
                img.setImageResource(R.drawable.dh);  
           }  
           if (childPosition == tempChild.size()) {  
                img.setImageResource(R.drawable.dj);  
           }  
           convertView.setOnClickListener(new OnClickListener() {  
                @Override  
                public void onClick(View v) {  
                     Toast.makeText(activity, tempChild.get(childPosition),  
                               Toast.LENGTH_SHORT).show();  
                }  
           });  
           return convertView;  
      }  
      @Override  
      public int getChildrenCount(int groupPosition) {  
           return ((ArrayList<String>) Childtem.get(groupPosition)).size();  
      }  
      @Override  
      public Object getGroup(int groupPosition) {  
           return null;  
      }  
      @Override  
      public int getGroupCount() {  
           return groupItem.size();  
      }  
      @Override  
      public void onGroupCollapsed(int groupPosition) {  
           super.onGroupCollapsed(groupPosition);  
      }  
      @Override  
      public void onGroupExpanded(int groupPosition) {  
           super.onGroupExpanded(groupPosition);  
      }  
      @Override  
      public long getGroupId(int groupPosition) {  
           return 0;  
      }  
      @Override  
      public View getGroupView(int groupPosition, boolean isExpanded,  
                View convertView, ViewGroup parent) {  
           if (convertView == null) {  
                convertView = minflater.inflate(R.layout.grouprow, null);  
           }  
           ((CheckedTextView) convertView).setText(groupItem.get(groupPosition));  
           ((CheckedTextView) convertView).setChecked(isExpanded);  
           return convertView;  
      }  
      @Override  
      public boolean hasStableIds() {  
           return false;  
      }  
      @Override  
      public boolean isChildSelectable(int groupPosition, int childPosition) {  
           return false;  
      }  
 }  

Grouprow.xml


 <CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"  
   xmlns:tools="http://schemas.android.com/tools"  
   android:id="@+id/textView1"  
   android:layout_width="wrap_content"  
   android:layout_height="60dp"  
   android:layout_marginLeft="5dp"  
   android:gravity="center_vertical"  
   android:padding="10dp"  
   android:text="@string/hello_world"  
   android:textColor="#FFFFFF"  
   android:textSelectHandleLeft="@string/hello_world"  
   android:textSize="14sp"  
   android:textStyle="bold" />  

childrow.xml

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
   xmlns:tools="http://schemas.android.com/tools"  
   android:layout_width="match_parent"  
   android:layout_height="40dp"  
   android:background="@android:color/black"  
   android:clickable="true"  
   android:orientation="vertical"  
   android:paddingLeft="40dp"  
   tools:context=".MainActivity" >  
   <LinearLayout  
     android:layout_width="match_parent"  
     android:layout_height="39dp"  
     android:gravity="center_vertical" >  
     <ImageView  
       android:id="@+id/childImage"  
       android:layout_width="30dp"  
       android:layout_height="30dp"  
       android:layout_margin="5dp"  
       android:background="@drawable/ic_launcher"  
       android:contentDescription="@string/hello_world" />  
     <TextView  
       android:id="@+id/textView1"  
       android:layout_width="wrap_content"  
       android:layout_height="wrap_content"  
       android:layout_marginLeft="5dp"  
       android:text="@string/hello_world"  
       android:textColor="#FFFFFF"  
       android:textSize="14sp"  
       android:textStyle="bold" />  
   </LinearLayout>  
 </LinearLayout>  

Android Manifest file :

 <?xml version="1.0" encoding="utf-8"?>  
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
   package="com.multilayerexpandable"  
   android:versionCode="1"  
   android:versionName="1.0" >  
   <uses-sdk  
     android:minSdkVersion="8"  
     android:targetSdkVersion="16" />  
   <application  
     android:allowBackup="true"  
     android:icon="@drawable/ic_launcher"  
     android:label="@string/app_name"  
     android:theme="@style/AppTheme" >  
     <activity  
       android:theme="@android:style/Theme.NoTitleBar"  
       android:name="com.multilayerexpandable.MainActivity"  
       android:label="@string/app_name" >  
       <intent-filter>  
         <action android:name="android.intent.action.MAIN" />  
         <category android:name="android.intent.category.LAUNCHER" />  
       </intent-filter>  
     </activity>  
   </application>  
 </manifest>  

Comments

  1. This code is working first time when i click on group but when i click on second group it shows abnormal behaviour as image appear in both group in different position.

    ReplyDelete
  2. There is no Toast showing in my code.
    Can you help me with that?
    Thanks

    ReplyDelete
    Replies
    1. you get any error??? if yes tem Past its below, if any other issue then show me you code

      Delete

Post a Comment

Popular posts from this blog

ANDROID - Adding ActionBar Navigation Tabs

Note: if you are develop App < 3.0 Android OS then use  ActionBarSherlock   support library. ActionBarSherlock is an extension of the  support library  designed to facilitate the use of the action bar design pattern across all versions of Android with a single API. Create new Android Project : in Main Activity package com.AlarmManager; import android.os.Bundle; import android.view.View; import com.actionbarsherlock.app.ActionBar; import com.actionbarsherlock.app.ActionBar.Tab; import com.actionbarsherlock.app.SherlockFragmentActivity; public class AlarmManagerActivity extends SherlockFragmentActivity { public static String ACTIVE_TAB = "activeTab"; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { setTheme(R.style.Theme_Sherlock_Light_DarkActionBar); super.onCreate(savedInstanceState); // setContentView(R.lay

Android Material Design (with Design support Library) - 4

Introducing  Design Support Library  , to use Material design component in older version API - android 2.1 and above.  You’ll find a navigation drawer view, floating labels for editing text, a floating action button, snackbar, tabs, and a motion and scroll framework to tie them together. I have used my previous example, so its easy for demonstrate.  Note: Update your Android SDK support  repositories, support library if not updated i  used compileSdkVersion 'android-MNC' for Android M but you can change it to build in older API add  dependencies in build.gradle file compile 'com.android.support:appcompat-v7:22.2.0' compile 'com.android.support:design:22.2.0' compile 'com.android.support:support-v4:22.2.0' start with  navigation drawer , its very easy to use lets, design for drawer <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://

Android show Data from Sqlite DB into Grid View

Shaadi.com Matrimonials Shaadi.com Indian Matrimonials Your Main Activity class package com . Sqlite_grid_view ; import java . util . ArrayList ; import java . util . List ; import android . app . Activity ; import android . os . Bundle ; import android . util . Log ; import android . view . View ; import android . widget . AdapterView ; import android . widget . AdapterView . OnItemClickListener ; import android . widget . ArrayAdapter ; import android . widget . GridView ; import android . widget . TextView ; import android . widget . Toast ; public class AndroidSQLiteTutorialActivity extends Activity { private GridView gridView ; public static ArrayList < String > ArrayofName = new ArrayList < String >(); /** Called when the activity is first created. */ @ Override public void onCreate ( Bundle savedInstanceState ) { super . onCreate ( savedInstanceState ); setContentView ( R . l