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