นักผจญโค้ด (CODE HUNTER)

มาทำความรู้จักกับ listview กันเถอะ



     ในบทความนี้เจ้าของบล็อกจะพามาเล่นกับ listview พอให้หอมปากหอมคอ

      ในไฟล์ activity_main.xml เจ้าของบล็อกประกาศ listview ขึ้นมาหนึ่งตัว
กำหนดความกว้างเป็น match_parent ความสูงเป็น match_parent และกำหนดชื่อให้มันว่า listview


     ต่อมาสร้างไฟล์เก็บไว้ที่โฟลเดอร์ layout  เจ้าของบล็อกตั้งชื่อว่า  list_item.xml ซึ่งไฟล์นี้เอาไว้สร้าง item ให้กับ listview ของเรานั่นเอง


  ในไฟล์ list_item.xml ประกาศ TextView ขึ้นมาหนึ่งตัว กำหนดความกว้างเป็น wrap_content ความสูงเป็น wrap_content ขนาดตัวหนังสือเป็น 20sp และตังชื่อให้มันว่า tvTextView

มาที่ไฟล์ MainActivity.java กัน 
          หมายเลข 1  เจ้าของบล็อกประกาศตัวแปรขึ้นมาหนึ่งตัวชื่อว่า data
          หมายเลข 2 ประกาศ ListView ขึ้นมา และทำการ findViewById ให้เรียบร้อย
          หมายเลข 3 เพิ่มข้อมูลเข้าไปในตัวแปร data จำนวน 99 ตัว
          หมายเลข 4 สร้าง adapter ในคำสั่ง CustomAdapter adapter = new CustomAdapter();
                             กำหนดค่าให้กับ adapter ในคำสั่ง adapter.setData(data);โดยการโยนตัวแปร data เข้าไป
                             ทำการ set adapter ให้กับ listview และโยน adapter ให้มันไป ในคำสั่ง listView.setAdpater(adpater);

โคดชุดนี้ยังไม่สามารถใช้งานได้ เพราะเรายังไม่ได้สร้าง Adapter นั่นเอง
                             


     ทำการประกาศ inner class ชื่อว่า CustomAdapter และทำการ สืบทอด (extends) มาจาก BaseAdapter และทำการ implement method ให้เรียบร้อย ซึ่งจะมี
     เมธอด getCount() ใช้นับจำนวน item
     เมธอด getItem(int position) ใช้หาตำแหน่งของ item
     เมธอด getItemId(int position) ใช้หา id ของ item
     เมธอด getView ใช้กำหนดค่าให้กับ item


จากนั้นประกาศตัวแปร List<String> data ขึ้นมาไว้ใช้งาน สร้างเมธอด setData ให้รับค่าตัวแปร List<String> data และกำหนดค่าให้กับ data ในคำสั่ง this.data = data ที่โยนเข้ามา

เมธอด getCount เราจะโยนขนาดของตัวแปร data ออกไปผ่านคำสั่ง return data.size();
เมธอด getItemId เราจะโดยน Object ออกไปผ่านคำสั่ง return data.get(position);
เมธอด getItemId เราจะโยน position ออกไป


ต่อมาเราสร้างคลาสขึ้นมาหนึ่งตัวชื่อว่า ViewHolder  ภายในคลาส ประกาศ TextView ขึ้นมาใช้งานหนึ่งตัว และสุดท้ายในประกาศ constructor ขึ้นมาหนึ่งตัว และให้รับค่า View เข้ามาด้วย
ทำการ findViewById ให้กับ TextView ในคอนสตัคเตอร์ 


กลับมาที่เมธอด getView
หมายเลข 1 ทำการเรียกใช้คลาส ViewHolder จากนั้นทำการเช็คว่า view เคยถูกสร้างขึ้นมาหรือยัง
ถ้ายังไม่เคยสร้าง ให้สร้างวิวขึ้นมาและกำหนด Tag ให้มันผ่านคำสั่ง setTag
แต่ถ้าวิวเคยถูกสร้างแล้วให้เรียกใช้งาน Tag เดิมผ่านคำสั่ง getTag

หมายเลข 2 กำหนดข้อความให้กับ TextView ผ่านคำสั่ง viewHolder.tvTextView.setText(data.get(position)); และ return view ออกไป


Share:

0 ความคิดเห็น:

แสดงความคิดเห็น

Recent Posts

Popular Posts

About Me

About Me