ini yang kita butuhkan :
1. IDE android (saya pake eclipse Juno)
2. kesabaran
dalam membuat apps ini saya menggunakan referensi adapter dari sini yang dibuat oleh Revi Tamada.
1. Buat sebuah project android baru, File -> New -> Project -> Android Application Project
2. Next terus, saya tetap menggunakan nama default activity nya MainActivity. Klik next sampai finish muncul.
3. Buka activity_main.xml yang ada di res-> layout ->
dan edit seperti berikut ini
<?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"
</LinearLayout>
4.Buat file xml baru yang sama-sama berada di bawah folder layout sehingga seperti di gambar atas. Beri 2 nama file tersebut list_group.xml dan list_item.xml.
ketikkan kode berikut untuk list_group.xml
<linearlayout android:background="#000000" android:layout_height="wrap_content" android:layout_width="fill_parent" android:orientation="vertical" android:padding="8dp" xmlns:android="http://schemas.android.com/apk/res/android"> <textview android:id="@+id/lblListHeader" android:layout_height="wrap_content" android:layout_width="fill_parent" android:paddingleft="?android:attr/expandableListPreferredItemPaddingLeft" android:textcolor="#f9f93d" android:textsize="17dp"> </textview></linearlayout>
dan ketikkan kode berikut di list_item.xml
<?xml version="1.0" encoding="utf-8"?> 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:paddingLeft="?android:attr/expandableListPreferredChildPaddingLeft" /></LinearLayout>5.Buat file class baru dengan nama ExpandableListAdapter.java
ketikkan kode berikut di ExpandableListAdapter.java
package com.example.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 _listDataHeader; // header titles
// child data in format of header title, child title
private HashMap> _listDataChild;
public ExpandableListAdapter(Context context, List listDataHeader,
HashMap> 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;
}
}
6. Setelah membuat adapter custom dari Revi Tamada tersebut, selanjutnya kita akan mengedit file MainActivity.java . Ketikkan seperti kode berikut ini :
package com.example.expandablelist;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
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(),
"Hari " + listDataHeader.get(groupPosition) + " dibuka",
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("Senin D.313");
listDataHeader.add("Rabu G.112 & G.129");
listDataHeader.add("Kamis E.349");
listDataHeader.add("Jum'at G.127");
// Adding child data
List<String> senin = new ArrayList<String>();
senin.add("Manajemen & SIM 2 : 7.30-9.30");
senin.add("Math Lanjut 2 : 11.30-13.30");
senin.add("Akuntansi 2 : 13.30-15.30");
List<String> rabu = new ArrayList<String>();
rabu.add("Teori Org. Umum 2 # : 9.30-11.30");
rabu.add("Math Sist. Informasi 2 : 12.30-14.30");
rabu.add("Tek. Pemrog. Terstruktur 2 ** : 14.30-16.30");
List<String> kamis = new ArrayList<String>();
kamis.add("Struktur & Org. Data 2 * : 10.30-13.30");
kamis.add("Pendidikan Agama Islam : 13.30-15.30");
List<String> jumat = new ArrayList<String>();
jumat.add("Statistika 2 : 13.30-15.30");
jumat.add("Sistem Operasi ** : 15.30-17.30");
listDataChild.put(listDataHeader.get(0), senin); // Header, Child data
listDataChild.put(listDataHeader.get(1), rabu);
listDataChild.put(listDataHeader.get(2), kamis);
listDataChild.put(listDataHeader.get(3), jumat);
}
}
gotcha! semua kode sudah ditulis, sekarang saatnya kita intip hasilnya
Thx to Revi Tamada !


mas ad filenya ngk??? klau ad q blh mntak??? krim ke zamronikh@gmail.com
BalasHapuswah dah lupa saya taro mana source code nya ,, wkwk
Hapusmaaf, kenapa tidak dimulai dari awal pendesainan projectnya, kita kan bingung pas ngeliat eee langsung kepembuatan halaman2 nya.
BalasHapusouiyaa.. terima kasih sarannya :)
HapusMaksud sy juga gitu kalo ada file matengnya sy download ajah... Heheh
BalasHapusMaksud sy juga gitu kalo ada file matengnya sy download ajah... Heheh
BalasHapusada tutorial vidio nya ga
BalasHapus