Lebih
ListView dengan Tata Letak Baris yang disesuaikan - Android
Saya ingin membuat Activity
yang berisi daftar yang baris-barisnya memiliki tata letak khusus.
Jadi saya telah membuat file list_entry_layout.xml
yang mendefinisikan tata letak yang harus dimiliki setiap baris dari daftar saya (dalam contoh saya, setiap baris harus memiliki judul dan ringkasan):
<?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="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/list_entry_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20dp" >
</TextView>
<TextView
android:id="@+id/list_entry_summary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="10dp" >
</TextView>
</LinearLayout>
Masalahnya adalah saya tidak tahu bagaimana cara menambahkan data ke setiap baris di kelas ListActivity
.
Dengan potongan kode berikut, saya dapat menambahkan judul setiap baris:
public class MyActivity extends ListActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.list_activity);
ListView listView = (ListView) findViewById(android.R.id.list);
String[] values = new String[] { "Android", "iPhone", "WindowsMobile",
"Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X",
"Linux", "OS/2" };
ArrayAdapter<String> titleAdapter = new ArrayAdapter<String>(this, R.layout.list_entry_layout, R.id.list_entry_title, values);
// Assign adapter to ListView
listView.setAdapter(titleAdapter);
}
}
Untuk menambahkan ringkasannya bagaimana caranya?
Jika saya menambahkan kode ini, ringkasannya akan divisualisasikan, bukan judulnya:
String[] values = new String[] { "Android_summary", "iPhone_summary", "WindowsMobile_summary", "Blackberry_summary", "WebOS_summary", "Ubuntu_summary", "Windows7_summary", "Max OS X_summary", "Linux_summary", "OS/2_summary" };
ArrayAdapter<String> summaryAdapter = new ArrayAdapter<String>(this, R.layout.list_entry_layout, R.id.list_entry_summary, values);
// Assign adapter to ListView
listView.setAdapter(summaryAdapter);
Berikut ini adalah hasil yang ingin saya peroleh:
22
3
Anda perlu membuat ArrayAdapter Anda sendiri:
Kemudian Anda harus menentukan bagaimana tampilan baris Anda dengan XML, sesuai dengan tujuan Anda, saya sarankan Anda menggunakan RelativeLayout dan akan terlihat seperti ini:
baris.xml
Jadi, di YourAdapter Anda harus mengatur konstuktor super:
Kemudian untuk menyesuaikan data Anda di
ListView
+ implementasi yang lebih efektif, saya sarankan Anda untuk mengganti metodegetView()
dan juga menggunakan pola desainHolder
.Terakhir, inisialisasi
ListView
dan setAdapter
:Catatan:
Pola desain Holder
mewakili objek sembarang yang menyimpan widget anak dari setiap baris, jadi Anda hanya perlu menemukannya sekali saja dan kemudian dengan objekHolder
Anda akan selalu dapat mengaksesnya.Implementasi
Holder
dapat terlihat seperti ini:Semoga membantu.
Anda dapat mencapai tata letak ini dengan menggunakan
android.R.layout.simple_list_item_2
daripada membuat tata letak baris kustom.Bagaimanapun jika Anda ingin menggunakan pendekatan tata letak baris kustom maka saya memiliki cuplikan yang siap untuk Anda.
Ini dia.
SampleActivity.java
Mobile.java
MyAdapter.java
Buatlah
ArrayAdapter
Anda sendiri.Lihat misalnya http://www.ezzylearning.com/tutorial.aspx?tid=1763429.