ปีกของ Android mucchin | เกี่ยวข้อง ListView



วิธีการกำหนด ListView


วิธีการกำหนด ListView?

ใน Android ยังมีมุมมองที่ ListView
ListView นี้เป็นมุมมองที่จะแสดงรายการรูปแบบของการตั้งค่าเดียวกัน
วิธีที่ง่ายที่สุดที่จะใช้หรือฉันจะแสดงรายชื่อที่คุณวางเพียง TextView ง่าย
อย่างไรก็ตามวิธีการใช้งานดังกล่าวที่เรียบง่ายอะไรอะไรจริง?
เพียงรายการชื่อผลิตภัณฑ์และชื่อผู้ใช้ไม่สามารถเป็นอะไรก็ได้เช่น
หรือปุ่มสำหรับการส่งข้อความเสียงหรือเป็นปุ่มสำหรับการเปลี่ยนแปลงไปยังหน้าจอที่แสดงชื่อผลิตภัณฑ์ข้อมูลรายละเอียดที่ให้กับผู้ใช้เป็นชื่อผู้ใช้ที่ไม่เพียง แต่ข้อความเพียงที่คุณต้องการตั้งค่าด้วยปุ่ม, ผมเชื่อว่าหรือวิธีการและการปรับแต่งอื่น ๆ ที่คุณต้องการและถ้ามีเป็นจำนวนมาก
การใช้ ListView เป็นเพียงเล็กน้อยสับสนฉันจะแสดงวิธีการใช้งานของตัวเองที่ดีของฉัน
ฉันไม่แน่นอนและด้วยวิธีนี้ไม่ว่าจะเป็นไม่ได้ใช้งานโดยทั่วไปค่อนข้าง


ขั้นแรกให้คุณสร้างรูปแบบของแถวใน ListView
วิธีการทำรูปแบบเป็นสิ่งเดียวกับเมื่อคุณทำเค้าโครงของหน้าจอ
ขั้นตอนที่เกี่ยวกับขั้นตอนเพื่อเพิ่ม XML ที่ยังคงเพิ่มมุมมอง
เนื่องจากวิธีการนี​​้ได้รับการแนะนำไว้ก่อนหน้านี้โปรดอ่านต่อไปนี้
วิธีการเพิ่ม Android XML
วิธีการตั้งค่ารูปแบบ XML ใน Eclipse
ในกรณีนี้ให้เราไปยังเค้าโครงต่อไปนี้เป็นตัวอย่าง
วางปุ่มและ TextView, ปุ่มที่จะแสดงบนขวาสุด
ผมคิดว่าวิธีใดที่แตกต่างกันบางอย่างเช่นตัวอย่างต่อไปนี้คือ


<? รุ่น Xml = เข้ารหัส "1.0" = "UTF-8"?>
<RelativeLayout
xmlns: หุ่นยนต์ = "http://schemas.android.com/apk/res/android"
หุ่นยนต์: layout_height = "wrap_content" หุ่นยนต์: layout_width = "fill_parent">
<TextView Android: layout_width = "wrap_content"
หุ่นยนต์: layout_height = "wrap_content"
หุ่นยนต์: id = "@ + / id nameText">
</ TextView>
<ปุ่ม Android: layout_width = "wrap_content"
หุ่นยนต์: layout_height = "wrap_content"
หุ่นยนต์: layout_alignParentRight = "true"
หุ่นยนต์: id = "@ + / id detailButton"
หุ่นยนต์: ข้อความ = "@ / string รายละเอียด">
ปุ่ม </>
<RelativeLayout />


เวลาที่จะตอบสนองความต้องการนี​​้ "ปุ่มที่จะแสดงบนขวาสุด" ว่ารูปแบบของผู้ปกครองจะใช้ RelativeLayout
คุณสมบัติของสินค้าที่จะ layout_width ที่แท้จริงของ RelativeLayout, เต็มความกว้างของหน้าจอและผู้ปกครอง, ความกว้างของเส้นของตัวเองใน ListView
และที่ว่าคือการ layout_alignParentRight ที่แท้จริงของปุ่มที่จะอยู่ในด้านขวาสุดของ RelativeLayout
ชุดรูปแบบนี้เพื่อให้สามารถปรับแต่ง ListView เพียงหนึ่งที่แสดงข้างต้นเป็นตัวอย่าง
ร่วมกับที่คุณชื่นชอบกรุณาทำการเค้าโครง


ต่อไปนี้คือการสร้างของ ListView เพื่อแสดงหน้าจอหลัก
แรกให้สร้างรูปแบบหน้าจอ
คราวนี้ให้เพียงกล่าวว่าเพียงและ TextView เพื่อแสดงส่วนหัวที่อยู่ด้านบนและด้านล่างมันจะแสดง ListView
ส่วนหัวหรือจะใช้ในการแสดงชื่อหรือหมายเลขของรายการที่เวลาคุณมีเพียงการแสดงตัวอักษรคงที่แบบนี้
กิจกรรมที่จะใช้ ListView เพื่อแสดงหน้าจอมากกว่ากิจกรรมตามปกติคุณจะได้รับมรดก ListActivity ถึงแม้ว่ามันเป็นสิ่งจำเป็นอย่างยิ่งที่คุณอาจจะได้เปรียบที่จะสืบทอด ListActivity
ถึงแม้ว่าในภายหลังจะทำให้รูปแบบดังต่อไปนี้ XML แล้ว


<? รุ่น Xml = เข้ารหัส "1.0" = "UTF-8"?>
<LinearLayout xmlns: หุ่นยนต์ = "http://schemas.android.com/apk/res/android"
หุ่นยนต์: ปฐมนิเทศ = "แนวตั้ง"
หุ่นยนต์: layout_width = "fill_parent"
หุ่นยนต์: layout_height = "fill_parent"
>
<TextView
หุ่นยนต์: layout_width = "fill_parent"
หุ่นยนต์: layout_height = "wrap_content"
หุ่นยนต์: ข้อความ = "@ / string สวัสดี"
/>
<ListView Android: layout_width = "wrap_content"
หุ่นยนต์: layout_height = "wrap_content"
หุ่นยนต์: id = "@ + / id Android: รายการ">
</ ListView>
<TextView Android: layout_width = "wrap_content"
หุ่นยนต์: layout_height = "wrap_content"
หุ่นยนต์: id = "@ + / id Android: ว่างเปล่า"
หุ่นยนต์: ข้อความ = "@ / string NoData">
</ TextView>
<LinearLayout />


ใน LinearLayout ได้ใช้งาน TextView, ListView, TextView
TextView แรกคือ TextView เพื่อแสดงชื่อของโปรแกรมที่ง่ายเท่านั้น
ListView เป็น TextView จากที่สองและสาม, ฉันต้องการให้คุณทราบจุดหนึ่งหุ่นยนต์: คือค่าของแอตทริบิวต์ id
คุณอยู่ที่ว่างเปล่า: @ + / id Android: รายการ, @ + / id หุ่นยนต์
บางสิ่งบางอย่าง TextView และกล่าวและสุดท้ายนี้เป็นรายชื่อถ้อยคำจะปรากฏในข้อมูลแม้ว่าจะไม่มีที่ 1 ในสถานที่แรก
เพื่อแอตทริบิวต์ข้อความแม้ว่าจะเป็น @ / string NoData นี้เป็นสตริงที่ string.xml ที่คุณกำหนดเอง
ตัวอย่างเช่นคุณได้ตั้งค่าถ้อยคำเช่น ". ไม่ได้ 1."
ด้วยวิธีนี้คือความเคลื่อนไหวที่จะสืบทอด ListActivity คือคุณโดยอัตโนมัติไปที่ฉันในการประมวลผลต่อไป


@ + Id / Android: ถ้า ListView ที่ระบุไว้ในรายการจะไม่แสดงอะไรเลย @ + / id หุ่นยนต์แทนเพื่อแสดงมุมมองที่ระบุไว้ในที่ว่างเปล่า


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


ถัดไปคุณจะให้เรียนประกอบด้วยกล่องและใส่ข้อมูล ได้แก่ สตริงเพื่อกำหนด ListView
คุณรู้หรือไม่สิ่งที่เรียกว่า JavaBean
คุณรู้หรือไม่ผมคิดว่าได้เรียน servlet และ JSP หากมีมากขึ้น
JavaBean และผมมีกฎไม่กี่อย่างเคร่งครัด···
ผมใส่ไปเพียงเล็กน้อยในทิศทางของเรื่องที่แตกต่างกัน ฉันขอโทษ
กรุณาคิดเพียงชั้นง่ายหนึ่งสำหรับตัวแปรเอกชนและมีวิธีการ setter getter และประชาชน
ที่นี่มันจะเพียงพอ
ตัวอย่างเช่นเวลานี้ ListView ถือว่าคุณลักษณะที่มีการปรับใช้ชื่อผลิตภัณฑ์และแมลงวันปุ่มเพื่อ URL สำหรับผลิตภัณฑ์นั้น
ข้อมูลที่ต้องการมีชื่อผลิตภัณฑ์และ URL
คุณได้ทำทั้งสองชั้นเป็นชนิด String เท่านั้นที่จะมี setters สำหรับแต่ละตัวแปรและชื่อผลิตภัณฑ์และ URL จะถูกเก็บไว้วิธีการ getter
สิ่งที่ต้องการต่อไปนี้เป็นเป็นตัวอย่าง


ประชาชน ItemBean คลาส {
ชื่อ String เอกชน = "";
สตริง URL เอกชน = "";
setName โมฆะสาธารณะ (ชื่อ String) {
this.name = name;
}
สาธารณะ String getName () {
กลับชื่อ;
}
ถือเป็นโมฆะ setUrl สาธารณะ (สตริง URL) {
this.url = url;
}
getURL สาธารณะ String () {
กลับ url;
}
}


จะยังคงสร้างข้อมูลสำหรับการอย่างใดอย่างหนึ่งที่จะปรากฏบนหนึ่งใน ListView อินสแตนซ์ของคลาสนี้
ผมโพสต์รหัสตัวอย่างเพื่อให้ในภายหลังและคุณจะรู้ในเวลานั้น




ต่อไปนี้คือการดำเนินการกิจกรรม
ก่อนที่จะสืบทอด ListActivity
ListActivity เป็น subclass ของกิจกรรมเช่น OnCreate เป็นปกติพร้อมกับกิจกรรม
ในกิจกรรมนี้คือการสร้างและแสดงผลของข้อมูลที่จะแสดงใน ListView

เพื่อ ListView เป็นวิธีการที่ setListAdapter (), ข้อมูลจะถูกแสดงโดยการตั้งค่าตัวอย่างของอะแดปเตอร์เป็นอาร์กิวเมนต์
นี้ยังเป็นผลประโยชน์ที่ได้รับโดยที่การสืบทอด ListActivity
อะแดปเตอร์เป็นตัวอย่างของข้อมูลที่จะแสดงหนึ่งโดยหนึ่งในรายชื่อ
อะแดปเตอร์ในการจัดการมากกว่าหนึ่งมีระดับที่เรียกว่า ArrayAdater เพราะเวลานี้เพื่อแสดง ListView ในการปรับแต่งคุณจะ ArrayAdapter สืบทอดคลาสนี้เพื่อสร้างระดับของอะแดปเตอร์ของคุณเอง
กรุณาใช้ใน Acitvity, ชั้นเรียนต่อไปนี้ (คุณสามารถของหลักสูตรยังเป็นที่ไฟล์ java แยก.)


ระดับ ListAdapter extends <ItemBean> ArrayAdapter {
ส่วนตัว mInflater LayoutInflater;
ส่วนตัว mTitle TextView;
ปุ่ม mButton เอกชน

ListAdapter สาธารณะ (บริบทบริบทวัตถุ <ItemBean> รายการ) {
ซุปเปอร์ (บริบท, 0, วัตถุ);
mInflater = (LayoutInflater) context.getSystemService (Context.LAYOUT_INFLATER_SERVICE);
}

ประชาชนดู getView (ตำแหน่ง int สุดท้าย, View convertView แม่ ViewGroup) {
ถ้า (convertView == null) {
convertView = mInflater.inflate (R.layout.row, null);
}
สุดท้าย ItemBean รายการ = this.getItem (ตำแหน่ง);
ถ้า (item! = null) {
mTitle = (TextView) convertView.findViewById (R.id.nameText);
mTitle.setText (item.getName ());
mButton = (ปุ่ม) convertView.findViewById (R.id.detailButton);
mButton.setOnClickListener (OnClickListener ใหม่ () {
ถือเป็นโมฆะ onClick สาธารณะ (ดูวี) {
Uri uri = Uri.parse (item.getUrl ());
เจตจำนง i = เจตจำนงใหม่ (Intent.ACTION_VIEW, uri);
startActivity (i);
}
});
}
กลับ convertView;
}

}


ระดับที่มีการสืบทอดและเป็น ArrayAdapter <ItemBean>
(และ ArrayAdapter ไม่ s ผมควรจะพูดว่าแม้ BaseAdapter และมัน BaseAdapter เพื่อให้พวกเขาได้พบและ? Bug ไม่สามารถแก้ไขได้ผมใช้มันตั้งแต่ ArrayAdapter.)
ด้านข้างเพื่อใช้ประโยชน์จากนี้ระดับของกิจกรรมหลังจากที่สร้าง ArrayList ซึ่งมีองค์ประกอบที่จะทำด้วยตัวเอง ItemBean ก่อนหน้านี้คุณสามารถใช้ในการสร้างอะแดปเตอร์ที่ถูกส่งผ่านไปยัง constructor ของคลาสนี้
วิธีการ getView จะเรียกว่าสำหรับสายข้อมูลโดยสายในวิธีการที่จะถูกเรียกจาก VM ที่จะแสดง
ของชิ้นส่วนต่อไปนี้:
สุดท้าย ItemBean รายการ = this.getItem (ตำแหน่ง);
ในการนี​​้เพื่อให้คุณสามารถใช้อินสแตนซ์ของ ItemBean ที่เกี่ยวข้องกับการให้สอดคล้องกับวิธีการนี​​้เรียกว่าจากนั้นโปรดให้การรักษาเท่าที่คุณต้องการ
ในตัวอย่างนี้เมื่อ TextView ตั้งชื่อปุ่มกดที่คุณกำลังตั้งค่าความจริงที่ว่าคุณต้องการที่จะเชื่อมต่อโดยใช้เบราว์เซอร์ไปยัง URL ที่เกี่ยวข้องกับ
ในขั้นตอนนี้ฉันอาจจะไม่ยังไม่แน่ใจเล็กน้อย
ถัดไปให้มาดูที่กระบวนการที่เรียกว่าการกำหนดให้สร้างอะแดปเตอร์นี้จริง


คราวนี้ชื่อที่ app ขอเรียกว่าการเปลี่ยนไปใช้หน้าของเครื่องมือค้นหาเองได้ด้วยการกดปุ่มและชื่อของเครื่องมือค้นหา
ทั้งหมดที่คุณต้องทำคือต่อไปนี้ OnCreate ()


OnCreate โมฆะสาธารณะ (Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.main);

ItemBean yahoo = new ItemBean ();
yahoo.setName ("Yahoo");
yahoo.setUrl ("http://www.yahoo.co.jp");

ItemBean = google ใหม่ ItemBean ();
google.setName ("Google");
google.setUrl ("http://www.google.co.jp");

รายการ <ItemBean> รายการ = new ArrayList <ItemBean> ();
list.add (yahoo);
list.add (Google);

ListAdapter อะแดปเตอร์ = new ListAdapter (getApplicationContext (), รายการ);
setListAdapter (อะแดปเตอร์);
}


นี่คือการเขียนที่เป็นของแข็งทำให้อินสแตนซ์ ItemBean ของ Google และ yahoo แล้วเพิ่มไปยังอินสแตนซ์ของ <ItemBean> รายการเพื่อสร้างอะแดปเตอร์ของคุณเอง ListAdapter ใช้ผู้ชายคนนั้น setListAdapter () ในการนี​​้ ฉันจะผ่าน
นี้เสร็จสมบูรณ์
หน้าจอต่อไปนี้จะแสดง


วิธีการกำหนด ListView


โค้ดตัวอย่างนี้สามารถดาวน์โหลดได้จากด้านล่าง
วิธีการกำหนดรหัสตัวอย่าง ListView
เมื่อคุณเข้าใจวิธีการนำเสนอที่นี่เพื่อสร้างส่วนที่เหลือเค้าโครงเท่าที่คุณต้องการคุณสามารถสร้างอะแดปเตอร์ของคุณเองตามที่มันเท่านั้น () ในการปรับแต่งนั้นคุณควรจะสามารถได้มากที่สุดทำให้แม้แต่เค้าโครง ListView สิ่งที่ getView
ฯลฯ หากคุณต้องการใช้ Web Services API ซึ่งข้อมูลกลับมาด้วยกันนำไปสร้าง class JavaBean เพื่อวิเคราะห์การตอบสนองและเพิ่ม ArrayList เพื่อสร้างอินสแตนซ์ของข้อมูลที่ผมรู้สึกว่า หาก Shiteyare ไปคุณสามารถใช้วิธีการแนะนำที่นี่คือหลังจากที่
ปรับผมหวังว่าคุณจะคิดว่าสิ่งที่อาจเป็นประโยชน์ที่จะใช้ทั่วไปกับอะไร···