Tech I Enjoy Logo
Custom Search
   Log In    OR    Register  


  Home >> Miscellaneous >> android-expandable-list-dynamically-created-example
Using Android API Level : 7 
This article will try to cover aspects of creating Expandable List at runtime.
By "runtime", I mean to say not by using Android XML file for layout and Views 
but with the help of coding using Android API such as 
"android.app.ExpandableListActivity" 
"android.widget.BaseExpandableListAdapter"

After preparing/setting-up Software Environment for developing Mobile Application on 
Android Platform, for me initial task is to formulate idea as to how this application
is going to behave at run-time. For example I choose to use Expandable List View
for showing various categories/varieties of items within each group in form of List.

I choose to show "cup-boards" and "Cameras" as shopping items on display within this
ListView.On click of each item there will be sub/child elements/items getting 
displayed below the main selectable section/header.

Following images are going to show the actual screen that is expected at the time of
execution of this example source code:

Initial screen on invocation of this application:


On click/touch of the first category following image shows the sub-elements:


On click/touch of the second/subsequent category following image shows 
the sub-elements:


On click/touch of the both categories following image shows the sub-elements:


Let us go through the files used as far as this example is concerned:

Example Project on Android Platform main.xml file:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ExpandableListView android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#ffffff"/> </LinearLayout>
ExpandableListViewExample.java
package com.techienjoy.example.expandablelistview; import android.app.ExpandableListActivity; import android.content.Context; import android.graphics.Color; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.BaseExpandableListAdapter; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; public class ExpandableListViewExample extends ExpandableListActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); setListAdapter(new ExampleAdapter(this)); } private class ExampleAdapter extends BaseExpandableListAdapter { private Context context; public ExampleAdapter(Context context) { this.context = context; } @Override public Object getChild(int groupPosition, int childPosition) { return null; } @Override public long getChildId(int groupPosition, int childPosition) { return 0; } /** * getChildView overridden method will have responsibility of * constructing View for the child element when corresponding * group element is activated by click / touch action. */ @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { LinearLayout linear = new LinearLayout(this.context); ImageView imView1 = null; ImageView imView2 = null; ImageView imView3 = null; ImageView imView4 = null; if(groupPosition == 0) { imView1 = new ImageView(this.context); imView1.setImageResource(R.drawable.cupboards1); imView2 = new ImageView(this.context); imView2.setImageResource(R.drawable.cupboards2); imView3 = new ImageView(this.context); imView3.setImageResource(R.drawable.cupboards3); imView4 = new ImageView(this.context); imView4.setImageResource(R.drawable.cupboards4); linear.addView(imView1); linear.addView(imView2); linear.addView(imView3); linear.addView(imView4); } if(groupPosition == 1) { imView1 = new ImageView(this.context); imView1.setImageResource(R.drawable.camera1); imView2 = new ImageView(this.context); imView2.setImageResource(R.drawable.camera2); imView3 = new ImageView(this.context); imView3.setImageResource(R.drawable.camera3); imView4 = new ImageView(this.context); imView4.setImageResource(R.drawable.camera4); linear.addView(imView1); linear.addView(imView2); linear.addView(imView3); linear.addView(imView4); } return linear; } @Override public int getChildrenCount(int groupPosition) { return 1; } @Override public Object getGroup(int groupPosition) { return null; } @Override public int getGroupCount() { return 2; } @Override public long getGroupId(int groupPosition) { return 0; } @Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { LinearLayout linear = new LinearLayout(this.context); ImageView imView = null; if(groupPosition == 0) { TextView txtView = new TextView(this.context); txtView.setText("Cup Board :"); txtView.setTextColor(Color.BLACK); linear.addView(txtView); imView = new ImageView(this.context); imView.setImageResource(R.drawable.cupboards); linear.addView(imView); } if(groupPosition == 1) { TextView txtView = new TextView(this.context); txtView.setText("Cameras :"); txtView.setTextColor(Color.BLACK); linear.addView(txtView); imView = new ImageView(this.context); imView.setImageResource(R.drawable.camerascategory); linear.addView(imView); } return linear; } @Override public boolean hasStableIds() { return false; } @Override public boolean isChildSelectable(int groupPosition, int childPosition) { return true; } } }
If you would like to share your thoughts on this, please write to us @ usingframeworks @ gmail dot com
Some of the other Articles you may would like to read :
Android Animation Example :
Example using Animation using Android Platform
and source code implementing this example.
Android DatePickerDialog Example :
Example on Android DatePickerDialog
explained with a very simple scenario
and appropriate screens captured and shown.
Android Customize Example :
Example using Customized Android Platform
and source code implementing this example.
Android Customized ImageButton Example :
Example using ImageButton and customized to show
a different view altogether and source code implementing
this example.
Android Canvas Draw Example :
Example using Canvas for drawing multiple shapes
and using touch event listener as well.
Android Benchmark Projects :
Projects Benchmark on Android Platform
Android Answers :
Answers of Questions on Android Platform
Android Data Example :
Example on using Android Data Example.
Android Content Provider Example :
Example on using Android Content Provider.
Android Cartoon Example :
Example using Cartoon using Android Platform
and source code implementing this example.
Android Canvas Example :
Example using Canvas using Android Platform
and source code implementing this example.
Android Clouds :
Clouds Projects on Android Platform
Android Data Access Example :
Example on using Android Data Access.
Android Database Example :
Example on using Android Database.
Android Batch Projects :
Projects Batch on Android Platform
Android DDL Example :
Example on using Android and DDL Example.
Android Custom View Example :
Example using Custom View using Android Platform
and source code implementing this example.
Android Architectures :
Architectures on Android Platform
Android AlertDialogExample :
Example using AlertDialog from Android Platform
and source code implementing this example.
Android Bluetooth Example :
Example using Bluetooth using Android Platform
and source code implementing this example.


References :
Tags: TabHost and TabActivity Example on Android Platform
Tags: ListView Example on Android Platform
Tags: android sensors list
Tags: android listview example
Tags: android imageview example
Tags: Android example download any file sourcecode
Tags: android expandable list dynamically created example
Tags: android expandable list example
Tags: Android Gallery surfaceviews spinner
Tags: Android example download any file sourcecode
Tags: Android Layout Example
Tags: Android Text To Speech Example

Tags: DOJO Example Dialog
Tags: DOJO Example Tree Widget
Tags: different logger file log4j
Tags: JDBC Transaction isolation
Tags: event handling java code
Tags: example quartz scheduler
Tags: example tag library web application
Tags: Flex
Tags: index
Tags: inmemory image creation java awt
Tags: JSF Example Main
Tags: JSF Example Tags CheckBoxes
Tags: JSF Example Tags dataTable
Tags: JSF Example Tags SelectBoxes
Tags: JSF Example Tags Walkthrough
Tags: JSF Example Validation
Tags: JSF Resource Bundle
Tags: log4j example 1
Tags: log4j example
Tags: Miscellaneous
Tags: Mule ESB File Transport
Tags: Mule ESB JMS Transport
Tags: stream download batch
Tags: sychronized block wait notify
Tags: thread wait notify example
Tags: using apache commons log
Tags: web load test
Tags: Wizard Framework Idea Java


For any of the content, if you would like to bring it to notice for removal from this web site, please write to this web site administrator @ EMAIL-ID,
with appropriate concern and supporting proof(s). After thorough review and if found genuine concern, we would take appropriate action and 
remove disputed content from this web site within 24 hours starting from the time it has brought to our notice.


The content provided in this page is not warranted and/or guaranteed by techienjoy.com. techienjoy.com is not liable for any negative 
consequences that may result/arise from implementing directly/indirectly any information covered in these pages/articles/tutorials.

All contents of this site is/are written and provided on an "AS IS" basis, without WARRANTIES or conditions of any kind, either express
or implied, including, without limitation, merchantability, or fitness for a particular purpose. You are solely responsible for determining 
the appropriateness of using or refering this and assume any risks associated with this.

This web site is optimized for learning and training. Examples might be simplefied to improve reading and basic understanding only. 
This web site content are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. 
In spite of all precautions taken to avoid any typo in these pages, there might be some issues like grammatical mistakes and typos 
being observed in these pages, techienjoy.com extends sincerest apologies to all our visitors for the same.

While using this web site, you agree to have read and accepted our terms of use and privacy policy.


Android Examples || Android Training || Struts 1 || Spring Framework || Software Architecture || Servlet || Log4j Framework || JSP || JSF || JPA || JMS || Hibernate Framework || Enterprise Java || EJB || Design Patterns || Build Tools/Frameworks || Android Platform || ESB || Struts 2 || Core Java

© Copyright 2010-2013, TECHIENJOY, All Rights Reserved.      Privacy Policy     Disclaimer & Terms & Conditions