Rabu, 05 Desember 2012

Aplikasi Android Menggunakan ListView dengan CheckList Checkbox Multiple Selection



Kali ini kita pelajari cara membuat List dengan ListView tetapi menggunakan CheckBox, artinya CheckList pada ListView tersebut dapat dipilih lebih dari satu, serta dapat mempunyai tercentang pada beberapa pilihan saat ditampilkan.

Program utama kita letakkan di MainActivity

MainActivity.java

package com.androidlistviewchecklist;

import android.os.Bundle;
import android.app.Activity;
import android.util.SparseBooleanArray;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;

// http://cariprogram.blogspot.com
// nuramijaya@gmail.com

public class MainActivity extends Activity {
String[] pilihan = {"Merapi", "Merbabu", "Slamet", "Ungaran", "Lawu", "Sindoro", "Sumbing"};
ListView list1;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        list1 = (ListView) this.findViewById(R.id.listView1);
        list1.setAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_multiple_choice, pilihan));
        list1.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
        
        list1.setItemChecked(0, true);
        
        
        list1.setSelected(true);
        list1.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
String selection = pilihan[arg2]; 
//Toast.makeText(getApplicationContext(), selection, Toast.LENGTH_LONG).show();


}});
        
        Button button1 = (Button) this.findViewById(R.id.button1);
        button1.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
int i=0;

SparseBooleanArray a = list1.getCheckedItemPositions();
       for (i=0;i<a.size();i++)
       {
        Toast.makeText(getApplicationContext(), String.valueOf(a.get(i)), Toast.LENGTH_LONG).show();
       }
}
        });

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}


Sebagai catatan tampilan ini dibuat menggunakan Eclipse dan ADT yang lebih baru dari biasanya jadi sedikit berbeda menggunakan RelativeLayout. Kita pakai saja tampilan default ditambah satu buah ListView dan satu buah Button : :

activity_main.xml


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="@string/hello_world"
        tools:context=".MainActivity" />

    <ListView
        android:id="@+id/listView1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true" >
    </ListView>

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:text="Button" />

</RelativeLayout>

Android Manifest tidak perlu kita ubah, sesuai dengan Activity yang telah dibuat dalam hal ini MainActivity.

AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.androidlistviewchecklist"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="15" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest> 

Project selengkapnya silakan didownload disini :

https://docs.google.com/open?id=0B4i1FYc_4RXzdjBRZzIwX21JZVk

Semoga berhasil, Selamat Coding.