BaseAdapter dan ArrayAdapters dalam Pemrograman Android
BaseAdapter
BaseAdapter adalah sebuah base class umum dari sebuah implementasi umum untuk sebuah Adapter yang bisa digunakan untuk ListView dengan mengimplementasikan ListAdapter Interfaces dan Spinner dengan mengimplementasikan SpinnerAdapter interdace.
Berikut adalah contoh codingan untuk menggunakan BaseAdapter :
1. Create Model Class
Untuk bisa menggunakan BaseAdapter pertama harus dibuat dulu ListView di dalam codingannya. Di dalam row ListView, pertama harus ada mengandung View Object dimana untuk contoh ini akan menggunakan Item Name dan Item Description. Jadi dalam class Item.java buatlah codingan berikut :
public class Item {
private String itemName;
private String itemDescription;
public Item(String name, String description) {
this.itemName = name;
this.itemDescription = description;
}
public String getItemName() {
return this.itemName;
}
public String getItemDescription() {
return itemDescription;
}
}
2. Edit Layout ListView
Selanjutnya, pada file xml kita membuat codingan LinearLayout yang berisi TextView untuk memunculkan ItemName dan ItemDescription di ListViewnya.
android:layout_width=”match_parent” android:layout_height=”match_parent” android:orientation=”vertical”>
android:id=”@+id/text_view_item_name” android:layout_width=”match_parent” android:layout_height=”wrap_content” />
android:id=”@+id/text_view_item_description” android:layout_width=”match_parent” android:layout_height=”wrap_content” />
3. Create Custom BaseAdapter Implementation
Pada Tahap ini, mulailah kita untuk membuat codingan untuk mengimplementasikan BaseAdapter ke ListView yang baru saja dibuat. Berikut adalah contoh codingannya :
public class CustomListAdapter extends BaseAdapter {
private Context context; //context
private ArrayList
//public constructor
public CustomListAdapter(Context context, ArrayList
this.context = context;
this.items = items;
}
@Override
public int getCount() {
return items.size(); //returns total of items in the list
}
@Override
public Object getItem(int position) {
return items.get(position); //returns list item at the specified position
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// inflate the layout for each list row
if (convertView == null) {
convertView = LayoutInflater.from(context).
inflate(R.layout.layout_list_view_row_items, parent, false);
}
// get current item to be displayed
Item currentItem = (Item) getItem(position);
// get the TextView for item name and item description
TextView textViewItemName = (TextView)
convertView.findViewById(R.id.text_view_item_name);
TextView textViewItemDescription = (TextView)
convertView.findViewById(R.id.text_view_item_description);
//sets the text for item name and item description from the current item object
textViewItemName.setText(currentItem.getItemName());
textViewItemDescription.setText(currentItem.getItemDescription());
// returns the view for the current row
return convertView;
}
}
ArrayAdapters
ArrayAdapters adalah adapter yang simple yang biasanya digunakan untuk mengubah ArrayList sebuah object menjadi View item yang dimasukkan ke dalam ListView Container. ArrayAdapter ini bisa muat diantara ArrayList (sumber data) dan ListView (representasi visual) dan mengkonfigurasi 2 aspek yaitu Array manay yang akan digunakan sebagai sumber data dalam list, dan bagaimana untuk mengubah item di dalam array menjadi View Object yang berkorespondensi.
Berikut adalah contoh kodingan Array Adapters :
1. Create Model Class
Seperti di contoh codingan BaseAdapter pertama kita harus membuat dulu ListView dalam class. Untuk contoh ini kita akan menggunakan View Object User dan Hometown. Berikut adalah contoh kodingannya :
public class User {
public String name;
public String hometown;
public User(String name, String hometown) {
this.name = name;
this.hometown = hometown;
}
}
2. Edit Layout ListView
Pada tahap berikutnya, kita mulai membuat membuat codingan LinearLayout yang berisi TextView untuk memunculkan User dan Hometown di ListViewnya. Berikut adalah codingan nya :
android:layout_width=”match_parent” android:layout_height=”match_parent” >
android:id=”@+id/tvName” android:layout_width=”wrap_content” android:layout_height=”wrap_content” android:text=”Name” />
android:id=”@+id/tvHome” android:layout_width=”wrap_content” android:layout_height=”wrap_content” android:text=”HomeTown” />
3. Defining the Adapter
Selanjutnya, kita harus define adapter untuk bisa menjelaskan proses mengubah Java Object menjadi View Object. Berikut adalah codingan tersebut :
public class UsersAdapter extends ArrayAdapter
public UsersAdapter(Context context, ArrayList
super(context, 0, users);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// Get the data item for this position
User user = getItem(position);
// Check if an existing view is being reused, otherwise inflate the view
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.item_user, parent, false);
}
// Lookup view for data population
TextView tvName = (TextView) convertView.findViewById(R.id.tvName);
TextView tvHome = (TextView) convertView.findViewById(R.id.tvHome);
// Populate the data into the template view using the data object
tvName.setText(user.name);
tvHome.setText(user.hometown);
// Return the completed view to render on screen
return convertView;
}
}
4. Attaching Adapter to ListView
Sekarang, kita bisa menggunakan adaptor itu di aktivitas untuk menampilkan larik item ke dalam ListView. Berikut adalah codingan tersebut :
// Construct the data source
ArrayList
// Create the adapter to convert the array to views
UsersAdapter adapter = new UsersAdapter(this, arrayOfUsers);
// Attach the adapter to a ListView
ListView listView = (ListView) findViewById(R.id.lvItems);
listView.setAdapter(adapter);
Perbedaan BaseAdapter dengan ArrayAdapter
Perbedaan antara BaseAdapter dengan ArrayAdapter adalah BaseAdapter adalah adapter yang sangat umum yang memungkinkan kita melakukan hampir semua hal yang kita inginkan. Namun, kita harus melakukan sedikit lebih banyak pengkodean sendiri untuk membuatnya berfungsi. Sedangkan ArrayAdapter adalah implementasi yang lebih lengkap yang berfungsi dengan baik untuk data dalam array atau ArrayLists.
Reference :
https://guides.codepath.com/android/using-an-arrayadapter-with-listview · https://guides.codepath.com/android/using-a-baseadapter-with-listview · https://stackoverflow.com/questions/16796182/whats-the-difference-between-baseadapter-and-arrayadapter