[Android] การใส่รูปใน ListActivity

จากตัวอย่าง การใช้งาน ListActivity เบื้องต้น เราสามารถสร้าง List รายการขึ้นมาได้แต่ List รายการดังกล่าว ยังดูไม่ค่อยน่าสนใจเท่าไหร่ วันนี้เราจะมาลองใส่รูปดูครับ ก่อนอื่นดูหน้าตาโปรแกรมที่เสร็จแล้วก่อนครับ

ทีนี้มาดูโค้ดกันบ้าง activity_main.xml
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/list"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    />
row.xml
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/row"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:drawableLeft="@drawable/ico_gear"
    android:drawablePadding="10dp"
    android:gravity="center_vertical"
    />

MainActivity.java
package com.simplelist;

import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivity extends ListActivity {

 final String[] fruit = {"Apple", "Banana", "Coconut", "Durian", "Guava", "Mango", "Mangosteen", "Rambutant"};
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  setListAdapter(new ArrayAdapter(this, R.layout.row, fruit));
 }
 
 @Override
 public void onListItemClick(ListView lv, View v, int position, long id){
  Toast.makeText(this, "You click " + fruit[position], Toast.LENGTH_SHORT).show();
 }

}
ในส่วนของ activity เรา extends ListActivity จากนั้นใช้ method setListAdapter โดยเรา new ArrayAdapter ด้วยการใช้ layout row และส่ง ตัวแปร fruit จากนั้นใน method onListItemClick ก็แสดงข้อความว่าเราคลิกรายการไหน แล้วรูปภาพมาจากไหน ?
สังเกตใน row.xml นะครับเราใช้ TextView ตัวเดียวโดยกำหนดรูปภาพโดยใช้ drawableLeft และกำหนด drawablePadding เราสามารถกำหนดได้ว่าจะใช้รูปด้านไหนซ้าย ขวา ล่าง บน โดยใช้ drawableLeft, drawableRight, drawableBottom, drawableTop แล้วแต่ว่าเราจะใช้อันไหน
    android:drawableLeft="@drawable/ico_gear"
    android:drawablePadding="10dp"
ในตัวอย่างนี้เราสามารถใส่รูปภาพลงไปใน List ได้ แต่ถ้าหากเราต้องการให้แต่ละรายการแตกต่างกันออกไปล่ะ อ่านได้ในบทความหน้านะครับ