[Android] การใช้งาน List Activity

การใช้งาน ListActivity เบื้องต้น 1

    วันนี้จะมาลองทำ ListActivity แบบเบื้องต้นกันครับ
  1. ขั้นแรกสร้างโปรเจ็คขึ้นมาก่อนครับ ในที่นี้ขอตั้งชื่อโปรเจ็คว่า SimpleListview นะครับ วิธีการสร้างโปรเจ็คสามารถดูได้จากในโพสต์ก่อนหน้านะครับ
  2. ขั้นตอนต่อไปเปิดไฟล์ res/layout/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=".MainActivity" >
    
     <ListView 
         android:id="@android:id/list"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         />
    </RelativeLayout>
    
    ในโค้ด xml ด้านบนก็ทำการเพิ่ม ListView เข้าไปนะครับ โดยกำหนด id เป็น @android:id/list เราจำเป็นต้องกำหนดแบบนี้ ถ้าเราต้องการใช้ activity ของเรา extends class ListActivity ถ้าไม่กำหนดจะเกิด error ครับ จริงๆแล้วเราสามารถย่อเหลือแค่นี้ก็ได้ครับ
    <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"
        />
    
    เพราะในหน้ัานี้เรามี view แค่อันเดียวคือ ListView นั่นเอง หน้าตาแบบ graphic ก็จะประมาณนี้ครับ


  3. จากนั้นเรามาดูในส่วนของ activity กันบ้างครับ
    package com.example.simplelistview;
    
    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 {
    
     String[] fruits = {
       "Apple",
       "Banana",
       "Durian",
       "Guava",
       "Mango",
       "Mangosteen",
       "Rambutant",
       "Melon",
      };
    
     @Override
     protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      setListAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, fruits));
      
      
     }
     
     @Override
     protected void onListItemClick(ListView l, View v, int position, long id)
     {
      String selected = fruits[position];
      Toast.makeText(this, "you select " + selected, Toast.LENGTH_SHORT).show();
     }
    }
    
    ใน Activity ของเราจะครับ จากเดิมที่เรา extends จาก Activity ก็เปลี่ยนมาเป็น extends จาก ListActivity จากนั้นกำหนดตัวแปร fruits เป็น Array String ขึ้นมาเก็บชื่อผลไม้ไว้ เข้ามาใน method onCreate
     @Override
     protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState); // เรียก parent constructor
      setContentView(R.layout.activity_main); // set layout
      setListAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, fruits));
                   // ทำการ set item ให้กับ listview ของเรา โดยสามารถแตกคำสั่งออกมาได้ดังนี้
                   // ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, fruits);
                   // setListAdapter(adapter);
       
     }
    
    ในส่วนของการ setListAdapter ด้านบนนั้น เราสร้าง ArrayAdapter ชนิด String ขึ้นมา(เพราะเราส่ง string array เข้าไปให้) เราส่งค่าให้กับ ArrayAdapter ในตอนที่ new 3 ค่า คือ context, id ของ views ที่จะใช้ในแต่ละแถว ในตัวอย่างใช้ layout ที่มีมาอยู่แล้วใน android , ตัวแปร fruits ถึงตรงนี้เราสามรถ run โปรเจ็คดูได้แล้วครับ ถ้าหากถูกต้องหน้าตาก็จะออกมาประมาณนี้
  4. ลองทำให้คลิกแล้วเกิดอะไรสักอย่างดู
     @Override
     protected void onListItemClick(ListView l, View v, int position, long id)
     {
      String selected = fruits[position];
      Toast.makeText(this, "you select " + selected, Toast.LENGTH_SHORT).show();
     }
    
    
    override method onListItemClick ครับ เวลาที่เราคลิกที่ item ใน list method นี้จะถูกเรียกใช้งาน การทำงานก็คือนำค่า position ที่ได้มาไปหาค่าจากใน fruits จากนั้นก็ แสดงออกมาทางหน้าจอครับ
    เมื่อเราคลิกก็จะมี popup แจ้งว่าเราคลิกอะไร ตัวอย่างนี้ก็จบแค่นี้แหละครับ อันนี้เป็นแค่ตัวอย่างการใช้งานอย่างง่าย คราวหน้าเราจะมาลองทำแบบที่ซับซ้อนมากกว่านี้ดูครับ