“ android.R.layout.simple_list_item_1” คืออะไร?


229

ฉันเริ่มเรียนรู้การพัฒนา Android และฉันกำลังติดตามตัวอย่างของหนังสือจาก todolist:

// Create the array list of to do items
final ArrayList<String> todoItems = new ArrayList<String>();

// Create the array adapter to bind the array to the listView
final ArrayAdapter<String> aa;
aa = new ArrayAdapter<String>(  this, 
                                android.R.layout.simple_list_item_1,
                                todoItems
                            );
myListView.setAdapter(aa);

ฉันไม่เข้าใจรหัสนี้โดยเฉพาะอย่างยิ่งบรรทัดนี้:

android.R.layout.simple_list_item_1

แต่ทำไมถึงเป็นพารามิเตอร์? ฉันแค่ต้องการอัปเดตมุมมองรายการของฉันด้วยอาร์เรย์ของฉันและหนึ่งในคำตอบที่แสดงให้เห็นนี้ ฉันไม่แน่ใจว่าทำไมฉันต้องการสิ่งนี้ ... นี่คือคำถามของฉัน ขอบคุณ! stackoverflow.com/questions/35098789/…
Ruchir Baronia

คำตอบ:


259

Zakaria นั่นคือการอ้างอิงถึงเอกสารเค้าโครง XML ในตัวที่เป็นส่วนหนึ่งของ Android OS แทนที่จะเป็นหนึ่งในเค้าโครง XML ของคุณเอง

นี่คือรายการเพิ่มเติมของเลย์เอาต์ที่คุณสามารถใช้ได้: http://developer.android.com/reference/android/R.layout.html
(ลิงก์อัปเดตขอบคุณ @Estel: https://github.com/android/platform_frameworks_base/ ต้นไม้ / หลัก / หลัก / res / res / เค้าโครง )

คุณสามารถดูรหัสสำหรับเลย์เอาต์ได้


15
รูปแบบนอกจากนี้ยังมีการติดตั้ง SDK ของคุณ
CommonsWare

10
เฮ้ดังนั้นพวกเขาคือ : P ฉันพยายามค้นหาก่อนโดยเพียงแค่เรียกดู jar Android ภายใน Eclipse และบอกฉันว่า "Source Not Found" แต่ใช่พวกเขาอยู่ภายใต้แพลตฟอร์ม> android-x> data> res> layout โทรดีมาก :)
Kevin Coppock

8
มันบอก listview สิ่งที่รูปแบบที่จะใช้สำหรับแต่ละแถว มีคนอื่นที่มีการตรวจสอบความคิดเห็นข้อความสำหรับการเลือกหลายตัวคุณสามารถสร้างเลย์เอาต์ที่กำหนดเองซึ่งรวมถึงรูปภาพและตัวอย่างข้อความหลายข้อความได้ อุปกรณ์ android.R เหล่านี้เป็นเพียงแหล่งข้อมูลที่ใช้งานง่ายสร้างขึ้นมาเพื่อคุณ
Kevin Coppock

30
ขอบคุณ! ว้าวนั่นเป็นเค้าโครงจำนวนมาก การอ้างอิง Android ทั้งหมดดูเหมือนว่าจะเปิดเผยเกี่ยวกับพวกเขา (ใน R.layout.html) เป็นค่าคงที่สำหรับแต่ละ id อาจมีเอกสารใด ๆ ที่แสดงตัวอย่างเหล่านี้พร้อมกรณีใช้งานตัวอย่าง? (เช่น "เค้าโครง X ลักษณะเช่น [รูปกับรหัสข้อมูล] นี้. มันเป็นที่ที่ดีที่สุดมาใช้ในกรณีที่มี b และ c. มันสามารถเห็นได้ในการดำเนินการในวายแอป") ใช่มันเป็นที่ดีที่จะรู้ว่าฉันสามารถ ปล้นห้องใต้ดินและแฮ็กข้อมูลทั้งหมดนี้ด้วยตัวเอง แต่รายการภาพประกอบที่สแกนได้ (vs XML) จะเป็นประโยชน์อย่างมาก!
Joe D'Andrea

12
นี่เป็นเรื่องปกติของ Google พวกเขาปล่อยเทคโนโลยีที่ยอดเยี่ยมทั้งหมดนี้และมีทักษะด้านเอกสารทั้งหมดของ IBM
angryITguy

35

นี่เป็นส่วนหนึ่งของระบบปฏิบัติการ android นี่คือเวอร์ชันจริงของไฟล์ XML ที่กำหนด

simple_list_item_1:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    style="?android:attr/listItemFirstLineStyle"
    android:paddingTop="2dip"
    android:paddingBottom="3dip"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" />

simple_list_item_2:

<TwoLineListItem xmlns:android="http://schemas.android.com/apk/res/android"
    android:paddingTop="2dip"
    android:paddingBottom="2dip"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">

    <TextView android:id="@android:id/text1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        style="?android:attr/listItemFirstLineStyle"/>

    <TextView android:id="@android:id/text2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@android:id/text1"
        style="?android:attr/listItemSecondLineStyle" />

</TwoLineListItem> 

13

ตามที่ได้รับคำตอบข้างต้นโดย: kcoppock และ Joril

ไปที่นี่: https://github.com/android/platform_frameworks_base/tree/master/core/res/res/res/layout

เพียงคลิกขวาที่ไฟล์เลย์เอาต์ที่คุณต้องการจากนั้นเลือก 'บันทึกเป็น' บันทึกที่อื่นแล้วคัดลอกในโฟลเดอร์ 'เลย์เอาต์' ในโครงการ Android ของคุณ (eclipse) ...

คุณสามารถดูว่าเค้าโครงมีลักษณะอย่างไร :)

ทางที่จะไป...


9

ดังที่ได้กล่าวไว้โดย Klap "android.R.layout.simple_list_item_1 เป็นการอ้างอิงถึงเอกสารเค้าโครง XML ในตัวที่เป็นส่วนหนึ่งของระบบปฏิบัติการ Android"
รูปแบบทั้งหมดอยู่ใน: sdk \ platforms \ android-xx \ data \ res \ res เลย์เอาต์
เมื่อต้องการดู XML ของเลย์เอาต์:
Eclipse : เพียงพิมพ์ android.R.layout.simple_list_item_1 ที่ใดที่หนึ่งในโค้ดกด Ctrl ค้างไว้เหนือกว่า simple_list_item_1 และจากดรอปดาวน์ที่ปรากฏขึ้นให้เลือก "เปิดการประกาศในเค้าโครง / simple_list_item_1.xml" มันจะนำคุณไปยังเนื้อหาของ XML
Android Studio : หน้าต่างโครงการ -> ไลบรารีภายนอก -> แพลตฟอร์ม Android X -> res -> โครงร่างและที่นี่คุณจะเห็นรายการโครงร่างที่มีอยู่
ป้อนคำอธิบายรูปภาพที่นี่


7

android.R.layout.simple_list_item_1นี้เป็นไฟล์รูปแบบแถวในโฟลเดอร์ละเอียด / listviewรูปแบบของคุณซึ่งมีการออกแบบที่สอดคล้องกันสำหรับแถวใน ตอนนี้เราก็ผูกรายการอาร์เรย์รูปแบบแถวโดยใช้mylistview.setadapter(aa);


5

ไม่จำเป็นต้องไปที่ลิงก์ภายนอกทุกสิ่งที่คุณต้องการอยู่ในคอมพิวเตอร์ของคุณแล้ว:

Android \ หุ่นยนต์ SDK \ แพลตฟอร์ม \ หุ่นยนต์ x \ ข้อมูล \ Res \ รูปแบบ

รหัสที่มาสำหรับเค้าโครง Android ทั้งหมดอยู่ที่นี่


4

สำหรับแต่ละรายการ:
Eclipse: เพียงพิมพ์android.R.layout.simple_list_item_1 ที่ใดที่หนึ่งในโค้ดกด Ctrl ค้างไว้เหนือsimple_list_item_1และจากดรอปดาวน์ที่ปรากฏขึ้นให้เลือกเปิดการประกาศในเค้าโครง / simple_list_item_1.xmlเปิดการประกาศในรูปแบบมันจะนำคุณไปยังเนื้อหาของ XML

จากนั้นหากคุณวางเมาส์เหนือแท็บsimple_list_item_1.xml ที่ได้ผลลัพธ์ในตัวแก้ไขคุณจะเห็นไฟล์อยู่ที่C: \ Data \ applications \ Android \ android \ android-sdk \ platforms \ android-19 \ data \ res \ res layout \ simple_list_item_1.xml (หรือตำแหน่งที่เทียบเท่าสำหรับการติดตั้งของคุณ)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.