Program Android Listview dan CheckBox


Deskripsi Program

Dalam kehidupan manusia sering dihadapkan dengan pilihan, ada yang harus memilih satu pilihan diantara banyak pilihan dan ada yang boleh memilih lebih dari satu. Maka dari itu, saya akan membuat program android dengan menggunakan listview dan checkbox untuk memilih bahasa pemrograman yang dikuasai.

Source code 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"
    tools:context="${relativePackage}.${activityClass}" >
    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="Belajar ListView CheckBox" />
    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/textView1"
        android:text="Bahasa Pemrograman yang dikuasai" />

    <ListView
        android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/button1" >
    </ListView>
</RelativeLayout>

Buat layout baru dengan nama bahasa_row.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:padding="6dip" >
    <CheckBox
        android:id="@+id/checkBox1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:focusable="false"
        android:focusableInTouchMode="false"
        android:text="CheckBox" />
    <TextView
        android:id="@+id/code"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/checkBox1"
        android:layout_alignBottom="@+id/checkBox1"
        android:layout_toRightOf="@+id/checkBox1"
        android:text="TextView" />
</RelativeLayout>

Buat clas baru dengan nama Bahasa.java
public class Bahasa {
 String id = null;
 String name = null;
 boolean selected = false;
 public Bahasa(String id, String name, boolean selected) {
  super();
  this.id = id;
  this.name = name;
  this.selected = selected;
 }
 public String getId() {
  return id;
 }
 public void setId(String id) {
  this.id = id;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public boolean isSelected() {
  return selected;
 }
 public void setSelected(boolean selected) {
  this.selected = selected;
 }
}

Edit class MainActivity.java
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
 MyCustomAdapter dataAdapter = null;
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  Button myButton = (Button) findViewById(R.id.button1);
  myButton.setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View v) {
    StringBuffer responseText = new StringBuffer();
    responseText.append("Bahsasa Pemrograman Yang dikuasai adalah");
    ArrayList<Bahasa> bahasaList = dataAdapter.bahasaList;
    for (int i = 0; i < bahasaList.size(); i++) {
     Bahasa bahasa = bahasaList.get(i);
     if (bahasa.isSelected()) {
      responseText.append("\n" + bahasa.getName());
     }
    }
    Toast.makeText(getApplicationContext(), responseText,
      Toast.LENGTH_SHORT).show();
   }
  });
  displayListView();
 }
 private void displayListView() {
  // Mendeklarasikan  arraylist bahasList dan menginisialiasai dengan 7 data
  ArrayList<Bahasa> bahasaList = new ArrayList<Bahasa>();
  Bahasa bahasa = new Bahasa("1", "Java", true);
  bahasaList.add(bahasa);
  bahasa = new Bahasa("2", "C++", false);
  bahasaList.add(bahasa);
  bahasa = new Bahasa("3", "Java Script", false);
  bahasaList.add(bahasa);
  bahasa = new Bahasa("4", "Erlang", false);
  bahasaList.add(bahasa);
  bahasa = new Bahasa("5", "Phyton", true);
  bahasaList.add(bahasa);
  bahasa = new Bahasa("6", "Perl", false);
  bahasaList.add(bahasa);
  bahasa = new Bahasa("7", "Pascal", false);
  bahasaList.add(bahasa);
  // Buata array adapter dari data bahasaList
  dataAdapter = new MyCustomAdapter(this, R.layout.bahasa_row,
    bahasaList);
  ListView listView = (ListView) findViewById(R.id.listView1);
  // Assign adapter to ListView
  listView.setAdapter(dataAdapter);
  listView.setOnItemClickListener(new OnItemClickListener() {
   public void onItemClick(AdapterView<?> parent, View view,
     int position, long id) {
    // When clicked, show a toast with the TextView text
    Bahasa bahasa = (Bahasa) parent.getItemAtPosition(position);
    Toast.makeText(getApplicationContext(),
      "Clicked on Row: " + bahasa.getName(),
      Toast.LENGTH_SHORT).show();
   }
  });
 }
 private class MyCustomAdapter extends ArrayAdapter<Bahasa> {
  private ArrayList<Bahasa> bahasaList;
  public MyCustomAdapter(Context context, int textViewResourceId,
    ArrayList<Bahasa> bahasaList) {
   super(context, textViewResourceId, bahasaList);
   this.bahasaList = new ArrayList<Bahasa>();
   this.bahasaList.addAll(bahasaList);
  }
  private class ViewHolder {
   TextView id;
   CheckBox name;
  }
  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
   ViewHolder holder = null;
   Log.v("ConvertView", String.valueOf(position));
   if (convertView == null) {
    LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    convertView = vi.inflate(R.layout.bahasa_row, null);
    holder = new ViewHolder();
    holder.id = (TextView) convertView.findViewById(R.id.code);
    holder.name = (CheckBox) convertView
      .findViewById(R.id.checkBox1);
    convertView.setTag(holder);
    holder.name.setOnClickListener(new View.OnClickListener() {
     public void onClick(View v) {
      CheckBox cb = (CheckBox) v;
      Bahasa bahasa = (Bahasa) cb.getTag();
      Toast.makeText(
        getApplicationContext(),
        "Clicked on Checkbox: " + cb.getText() + " is "
          + cb.isChecked(), Toast.LENGTH_SHORT)
        .show();
      bahasa.setSelected(cb.isChecked());
     }
    });
   } else {
    holder = (ViewHolder) convertView.getTag();
   }
   Bahasa bahasa = bahasaList.get(position);
   holder.id.setText(" (id:" + bahasa.getId() + ")");
   holder.name.setText(bahasa.getName());
   holder.name.setChecked(bahasa.isSelected());
   holder.name.setTag(bahasa);
   return convertView;
  }
 }
}

Berikut hasil run programnya
Klik bahasa yang dikuasai lalu sentuh button Bahasa Pemrograman yang dikuasai maka akan muncul Toast yang mengiformasikan bahasa-bahasa yang dipilih


















Komentar

Postingan populer dari blog ini

PROGRAM KASIR MENGGUNAKAN MEMBER

Program Sederhana Android

Program Kasir