Rabu, 11 Maret 2015

cara membuat aplikasi jadwal di android

ini tulisan sederhana tentang membuat aplikasi jadwal kuliah di android supaya ga ribet buka galeri dulu baru bisa liat jadwal, ekeke

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"?>
<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: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 !

7 komentar:

  1. mas ad filenya ngk??? klau ad q blh mntak??? krim ke zamronikh@gmail.com

    BalasHapus
    Balasan
    1. wah dah lupa saya taro mana source code nya ,, wkwk

      Hapus
  2. maaf, kenapa tidak dimulai dari awal pendesainan projectnya, kita kan bingung pas ngeliat eee langsung kepembuatan halaman2 nya.

    BalasHapus
  3. Maksud sy juga gitu kalo ada file matengnya sy download ajah... Heheh

    BalasHapus
  4. Maksud sy juga gitu kalo ada file matengnya sy download ajah... Heheh

    BalasHapus