because i'm beginner

.

Selasa, 27 Oktober 2015

Android: ListActivity

5 komentar

INTRODUCTION
ListActivity yaitu menyusun object secara vertikal tanpa menggunakan layout karena langsung diatur oleh activity, berbeda dengan ListView yang membutuhkan layout untuk menampilkan list.

ListActivity dan ListView berbeda dalam penulisan code java tapi sama dalam hal penggunaan adapter. Posting kali ini kita mulai dari ListActivity terlebih dahulu.

ListActivity dalam hal penggunaan adapter terbagi dua, yaitu
  1.  Menggunakan adapter default Android
  2.  Menggunakan custom adapter, ini supaya kita lebih leluasa mengatur susunan item per list.

OK.. cekidot

SAMPLE -- LIST ACTIVITY WITH DEFAULT ADAPTER
  • Buat project baru, pilih Blank Activity pada pilihan template aplikasi
  • Buat layout baru, beri nama item_basic.xml, copy ini :
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/text_basic"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:padding="20dp"
        android:text="Item Text"
        android:textAppearance="?android:attr/textAppearanceMedium" /> 
  • Buka MainActivity.java, hapus semua kecuali package bla.bla.bla
  • Ganti dengan ini :
import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends ListActivity {

 //membuat variable list
 static final String[] ANDROID_LIST = new String[] {
  "Alpha",
  "Beta",
  "Cupcake",
  "Donut",
  "Eclair",
  "Frozen yogurt",
  "Ginger Bread",
  "Honeycomb",
  "Ice Cream Sandwich",
  "Jelly Bean",
  "Kitkat",
  "Lollipop",
  "Marshmallow"
  };
 
 //variable memanggil ArrayAdapter (default)
 private ArrayAdapter<String> adapter;

 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  
  //memuat list melalui adapter
  adapter = new ArrayAdapter<String>(
    this,    //activity
    R.layout.item_basic, //layout berisi textview
    ANDROID_LIST  //memanggil list
    );

  //set adapter
  setListAdapter(adapter);
  
  //set onClick
  ListView listView = getListView();oject baru dengan Blang Activity
  listView.setOnItemClickListener(new OnItemClickListener() {
   public void onItemClick(AdapterView<?> parent, View view,
     int position, long id) {
    
       // ketika di klik muncul toast
       Toast.makeText(getApplicationContext(),((TextView) view).getText(), Toast.LENGTH_SHORT).show();
   }
  });

 }

}

Hasilnya :


SAMPLE -- LIST ACTIVITY WITH CUSTOM ADAPTER
Custom Adapter disini sangat membebaskan kita untuk menaruh lebih dari satu item untuk setiap list, bahkan bisa menambahkan gambar.
  • Buat project baru
  • Buat layout baru, beri nama item_basic_with_image.xml
  • Copy ini : 
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/RelativeLayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="20dp"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/image_item"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:padding="4dp"
        android:scaleType="centerCrop"
        android:src="@drawable/ic_launcher" />

    <TextView
        android:id="@+id/text_item"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_marginLeft="12dp"
        android:layout_toRightOf="@id/image_item"
        android:text="Medium Text"
        android:textAppearance="?android:attr/textAppearanceMedium" />

</RelativeLayout>

  • Download dulu bahannya disini, extract, masukkan ke res/drawable-hdpi 
  • Buat Class baru untuk adapternya, beri nama OsVersionAdapter.java, copy ini :
import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class OsVersionAdapter extends ArrayAdapter<String> {
  
  private final Activity context;
  private final String[] osName;
  private final int[] img;
  
  public OsVersionAdapter(Activity context, String[] itemname, int[] img) {
   super(context, R.layout.item_basic_with_image, itemname);
   // TODO Auto-generated constructor stub
   
   this.context=context;
   this.osName=itemname;
   this.img=img;
  }
  
  public View getView(int position,View view,ViewGroup parent) {
   LayoutInflater inflater=context.getLayoutInflater();
   View rowView=inflater.inflate(R.layout.item_basic_with_image, null, true);
   
   ImageView iv = (ImageView) rowView.findViewById(R.id.image_item);
   TextView tv = (TextView) rowView.findViewById(R.id.text_item);
   
   iv.setImageResource(img[position]);
   tv.setText(osName[position]);
   return rowView;
   
  };

}
  • Buka MainActivity.java, hapus semua code kecuali package bla.bla.bla
import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivity extends ListActivity{
 
 String[] itemname = {
   "Alpha",
   "Beta",
   "Cupcake",
   "Donut",
   "Eclair",
   "Frozen yogurt",
   "Ginger Bread",
   "Honeycomb",
   "Ice Cream Sandwich",
   "Jelly Bean",
   "Kitkat",
   "Lollipop",
   "Marshmallow"
   };
 
 int[] imgid={
   R.drawable.a,
   R.drawable.b,
   R.drawable.c,
   R.drawable.d,
   R.drawable.e,
   R.drawable.f,
   R.drawable.g,
   R.drawable.h,
   R.drawable.i,
   R.drawable.j,
   R.drawable.k,
   R.drawable.l,
   R.drawable.m
   };
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  
  OsVersionAdapter adapter=new OsVersionAdapter(this, itemname, imgid);

  setListAdapter(adapter);

  ListView list = getListView();
  list.setOnItemClickListener(new OnItemClickListener() {
 
   @Override
   public void onItemClick(AdapterView<?> parent, View view,
     int position, long id) {
    String Slecteditem= itemname[+position];
    Toast.makeText(getApplicationContext(), Slecteditem, Toast.LENGTH_SHORT).show();
    
   }
  });
 }
}


Hasilnya :

Semogabermanfaat...

5 komentar :

  1. Monggo um, silahkan praktek :)

    BalasHapus
  2. Trus kalo di click nama tersebut,pindah ke layout lain gimna yak ?

    BalasHapus
    Balasan
    1. Coba search dulu di gugel,
      keyword: panggil activity dari listview
      belum sempet lanjutin tutornya :)

      Hapus
  3. Hallo, mau nanya nih, saya coba yg pertama diatas tp ada kesalahan android:text="Item Basic". Solusinya gimana? Atau memang ada listing sebelumnya di strings.xml?

    BalasHapus