วิธีการประยุกต์ใช้ 2 บทเรียนของ Alert Message อย่าง Toast มาใช้ร่วมกับ ListView ให้เกิดการกระทำเมื่อมีการเลือก Row ข้อมูลบนแอพ Android อย่างง่าย
ก่อนจะเข้าบทเรียนนี้ ลองศึกษาบทเรียนก่อนหน้านี้ก่อนนะครับ
- เขียนแอพ Android ฉบับเริ่มต้น การใช้งาน TextView และทดสอบแอพ เบื้องต้น
- เขียนแอพ Android ฉบับเริ่มต้น การใช้งาน Button ร่วมกับ TextView
- เขียนแอพ Android ฉบับเริ่มต้น ใช้งาน EditText รับค่าตัวแปร
- เขียนแอพพลิเคชัน Android ฉบับเริ่มต้น การใช้ ListView
- เขียนแอพ Android ฉบับเริ่มต้นการทำ Alert Message ด้วย Toast
บทเรียนนี้จะใช้ Tutorial ก่อน 2 ส่วนคือ ListView จากบทความนี้
และ การแสดงข้อความเตือนจาก การใช้ Toast ในบทความนี้
เปิด Project เดิมของ ListView ขึ้นมาครับ ตรวจสอบ Source Code ในไฟล์ MainAcivity.java ก่อนว่าเป็นแบบนี้หรือเปล่า
หลังจากนั้นให้ทำการประกาศ import ของ Header ที่เราต้องใช้เพิ่มเติมครับ
import android.widget.AdapterView.OnItemClickListener; import android.widget.AdapterView; import android.widget.Toast;
เขียน ฟังก์ชันเพิ่มเข้าไปคือ
listViewMovie.setOnItemClickListener(new AdapterView.OnItemClickListener() { });
เป็นการบอกว่า เมื่อเรา คลิกที่ Item ของ ListView จะเกิดอะไรขึ้น แทรก Code ลงไปทันทีครับ
@Override public void onItemClick(AdapterView<?> parent, View view, int position,long arg3) { // TODO Auto-generated method stub int itemPosition = position; String itemValue = (String) listViewMovie.getItemAtPosition(position); }
ภาพรวมเมื่อ ใส่คำสั่งเสร็จจะเป็นแบบนี้
listViewMovie.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position,long arg3) { // TODO Auto-generated method stub int itemPosition = position; String itemValue = (String) listViewMovie.getItemAtPosition(position); } });
เอาคำสั่ง Toast มาใส่ ใต้บรรทัด
String itemValue = (String) listViewMovie.getItemAtPosition(position);
โดยจะเป็นการกำหนดว่า ค่าที่เราจะรับจาก onItemClick นั้นจะประกอบด้วย position เป็น Int ครับ แล้วเราจะเอา Position มาเทียบ ดึง itemValue ออกมาอีกที คือ String ที่อ้างจากตำแหน่งของแถวนั่นเอง
คำสั่งก็คือ
Toast.makeText(getApplicationContext(), "Click :"+itemPosition+" Item : " +itemValue , Toast.LENGTH_LONG) .show();
ภาพรวมของฟังก์ชันจะเป็นดังนี้
listViewMovie.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position,long arg3) { // TODO Auto-generated method stub int itemPosition = position; String itemValue = (String) listViewMovie.getItemAtPosition(position); Toast.makeText(getApplicationContext(), "Click :"+itemPosition+" Item : " +itemValue , Toast.LENGTH_LONG) .show(); } });
ตรวจสอบ Source Code ไฟล์ MainActivity.java จะเป็นดังนี้
package com.daydev.listviewdemo; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.widget.ListView; import android.widget.ArrayAdapter; import android.widget.AdapterView.OnItemClickListener; import android.widget.AdapterView; import android.widget.Toast; public class MainActivity extends Activity { ListView listView ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); String[] Movies = new String[] { "An American Horror Story Season 1", "An American Horror Story Season 1", "An American Horror Story Season 1", "Game of Thrones Season 1", "Game of Thrones Season 2", "Game of Thrones Season 3", "Game of Thrones Season 4", "True Detective Season 1" }; final ListView listViewMovie = (ListView)findViewById(R.id.listViewMovie); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, Movies); listViewMovie.setAdapter(adapter); listViewMovie.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position,long arg3) { // TODO Auto-generated method stub int itemPosition = position; String itemValue = (String) listViewMovie.getItemAtPosition(position); Toast.makeText(getApplicationContext(), "Click :"+itemPosition+" Item : " +itemValue , Toast.LENGTH_LONG) .show(); } }); } }
ทดลอง Run ตัวแอพพลิเคชันของเราผ่าน Emulator ครับ แล้วลองเลือก สักแถวดู จะเห็นผลลัพธ์ ดังนี้
ถ้าเลือกแถวอื่นก็จะเป็นแบบนี้
บทเรียนย้อนหลัง
- เขียนแอพ Android ฉบับเริ่มต้น การใช้งาน TextView และทดสอบแอพ เบื้องต้น
- เขียนแอพ Android ฉบับเริ่มต้น การใช้งาน Button ร่วมกับ TextView
- เขียนแอพ Android ฉบับเริ่มต้น ใช้งาน EditText รับค่าตัวแปร
- เขียนแอพพลิเคชัน Android ฉบับเริ่มต้น การใช้ ListView
- เขียนแอพ Android ฉบับเริ่มต้นการทำ Alert Message ด้วย Toast