Android DeveloperBeginningDeveloperFeaturedGoogle DevelopersJavaNewbieProgramming Language

เขียนแอพ Android ใช้งาน Toast ร่วมกับ ListView ส่งค่าตำแหน่ง

วิธีการประยุกต์ใช้ 2 บทเรียนของ Alert Message อย่าง Toast มาใช้ร่วมกับ ListView ให้เกิดการกระทำเมื่อมีการเลือก Row ข้อมูลบนแอพ Android อย่างง่าย

device-2557-06-10-120732

ก่อนจะเข้าบทเรียนนี้ ลองศึกษาบทเรียนก่อนหน้านี้ก่อนนะครับ

บทเรียนนี้จะใช้ 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 ครับ แล้วลองเลือก สักแถวดู จะเห็นผลลัพธ์ ดังนี้

listView-toast-sample-1

ถ้าเลือกแถวอื่นก็จะเป็นแบบนี้

listView-toast-sample-2

บทเรียนย้อนหลัง

Asst. Prof. Banyapon Poolsawas

อาจารย์ประจำสาขาวิชาการออกแบบเชิงโต้ตอบ และการพัฒนาเกม วิทยาลัยครีเอทีฟดีไซน์ & เอ็นเตอร์เทนเมนต์เทคโนโลยี มหาวิทยาลัยธุรกิจบัณฑิตย์ ผู้ก่อตั้ง บริษัท Daydev Co., Ltd, (เดย์เดฟ จำกัด)

Related Articles

Back to top button

Adblock Detected

เราตรวจพบว่าคุณใช้ Adblock บนบราวเซอร์ของคุณ,กรุณาปิดระบบ Adblock ก่อนเข้าอ่าน Content ของเรานะครับ, ถือว่าช่วยเหลือกัน