व्यू में लेआउट

लिखने का तरीका आज़माएं
Android के लिए, Jetpack Compose हमारा सुझाया गया यूज़र इंटरफ़ेस (यूआई) टूलकिट है. Compose में लेआउट इस्तेमाल करने का तरीका जानें.

लेआउट, आपके ऐप्लिकेशन के यूज़र इंटरफ़ेस का स्ट्रक्चर तय करता है. जैसे, एक गतिविधि पर टैप करें. इसमें सभी एलिमेंट लेआउट को बनाने के लिए, View और ViewGroup ऑब्जेक्ट हैं. आम तौर पर, View कुछ ऐसा ड्रॉ करता है जिसे उपयोगकर्ता देख सकता है और के साथ इंटरैक्ट करें. ViewGroup एक ना दिखने वाला कंटेनर होता है, जो View और अन्य ViewGroup का लेआउट ऑब्जेक्ट हैं, जैसा कि पहली इमेज में दिखाया गया है.

पहली इमेज. व्यू हैरारकी (व्यू और व्यू ग्रुप के लेआउट का क्रम) का इलस्ट्रेशन, जो यूज़र इंटरफ़ेस (यूआई) लेआउट.

View ऑब्जेक्ट को अक्सर विजेट कहा जाता है और ये इनमें से एक हो सकते हैं सब-क्लास का इस्तेमाल करती हैं, जैसे कि Button या TextView. कॉन्टेंट बनाने ViewGroup ऑब्जेक्ट को आम तौर पर लेआउट कहा जाता है और ये एक हो सकते हैं भी बहुत कुछ हो सकता है, जो आपके लिए अलग-अलग लेआउट स्ट्रक्चर उपलब्ध कराता है. उदाहरण के लिए, LinearLayout या ConstraintLayout.

लेआउट का एलान दो तरीकों से किया जा सकता है:

  • एक्सएमएल में यूज़र इंटरफ़ेस (यूआई) एलिमेंट का एलान करें. Android एक आसान एक्सएमएल फ़ाइल देता है View क्लास और सब-क्लास से जुड़ी शब्दावली, जैसे कि विजेट और लेआउट के लिए. Android Studio की एक्सएमएल बनाने के लिए, लेआउट एडिटर लेआउट करने की सुविधा मिलती है.

  • रनटाइम के दौरान लेआउट एलिमेंट इंस्टैंशिएट करना. आपका ऐप्लिकेशन बना सकता है View और ViewGroup ऑब्जेक्ट में बदलाव करके, अपने प्रॉपर्टी प्रोग्राम के हिसाब से.

एक्सएमएल में अपने यूज़र इंटरफ़ेस (यूआई) का एलान करके, अपने ऐप्लिकेशन के प्रज़ेंटेशन को इससे अलग किया जा सकता है इसकी कार्रवाई को कंट्रोल करता है. एक्सएमएल फ़ाइलों का इस्तेमाल करने से, अलग-अलग स्क्रीन साइज़ और ओरिएंटेशन के लिए, अलग-अलग लेआउट उपलब्ध कराएं. यह है में आगे चर्चा की गई है अलग-अलग स्क्रीन पर काम करें साइज़.

Android फ़्रेमवर्क आपको इनमें से किसी एक या दोनों का इस्तेमाल करने की सुविधा देता है इन तरीकों का इस्तेमाल करके, अपने ऐप्लिकेशन का यूज़र इंटरफ़ेस (यूआई) बनाएं. उदाहरण के लिए, आप एलान कर सकते हैं कि आपके ऐप्लिकेशन की एक्सएमएल में डिफ़ॉल्ट लेआउट का इस्तेमाल करता है और फिर रनटाइम के दौरान लेआउट में बदलाव करता है.

एक्सएमएल लिखें

Android की एक्सएमएल शब्दावली का इस्तेमाल करके, तेज़ी से यूज़र इंटरफ़ेस (यूआई) लेआउट और इनमें शामिल स्क्रीन एलिमेंट, ठीक वैसे ही जैसे आप एचटीएमएल में वेब पेज बनाते हैं का इस्तेमाल किया जा सकता है.

हर लेआउट फ़ाइल में सिर्फ़ एक रूट एलिमेंट होना चाहिए, जो View या ViewGroup ऑब्जेक्ट. रूट तय करने के बाद एलिमेंट के लिए, आप अतिरिक्त लेआउट ऑब्जेक्ट या विजेट को चाइल्ड एलीमेंट के रूप में जोड़ सकते हैं धीरे-धीरे View की हैरारकी बनाएं, जो आपके लेआउट को तय करती हो. इसके लिए उदाहरण के लिए, यहां एक एक्सएमएल लेआउट दिया गया है जो वर्टिकल LinearLayout का इस्तेमाल करके TextView और Button को होल्ड करें:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical" >
    <TextView android:id="@+id/text"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="Hello, I am a TextView" />
    <Button android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello, I am a Button" />
</LinearLayout>

एक्सएमएल में अपने लेआउट का एलान करने के बाद, फ़ाइल को आपके Android प्रोजेक्ट के res/layout/ में .xml एक्सटेंशन मौजूद है डायरेक्ट्री को सही तरीके से कंपाइल करता है.

लेआउट एक्सएमएल फ़ाइल के सिंटैक्स के बारे में ज़्यादा जानकारी के लिए, देखें लेआउट के बारे में जानकारी देने वाला संसाधन.

एक्सएमएल रिसॉर्स को लोड करें

जब आप अपने ऐप्लिकेशन को कंपाइल करते हैं, तो हर एक एक्सएमएल लेआउट फ़ाइल को View संसाधन. अपने ऐप्लिकेशन के Activity.onCreate() अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है कॉलबैक लागू करना. कॉल करके ऐसा करें setContentView(), फ़ॉर्म में इसे अपने लेआउट रिसॉर्स का रेफ़रंस पास करना: R.layout.layout_file_name. उदाहरण के लिए, अगर आपके एक्सएमएल लेआउट को main_layout.xml के तौर पर सेव किया गया है. इसे अपने Activity इस तरह से है:

Kotlin

fun onCreate(savedInstanceState: Bundle) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.main_layout)
}

Java

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_layout);
}

Android फ़्रेमवर्क, onCreate() कॉलबैक मैथड को कॉल करता है Activity के लॉन्च होने पर, आपका Activity. ज़्यादा के लिए गतिविधि की लाइफ़साइकल के बारे में जानकारी, देखें परिचय गतिविधियां.

विशेषताएं

हर View और ViewGroup ऑब्जेक्ट अपने-आप काम करता है एट्रिब्यूट की वैल्यू सबमिट की जा सकती है. कुछ एट्रिब्यूट, खास तौर पर View के लिए होते हैं ऑब्जेक्ट है. उदाहरण के लिए, TextView, textSize के साथ काम करता है एट्रिब्यूट की वैल्यू सबमिट करें. हालांकि, ये एट्रिब्यूट किसी View पर भी इनहेरिट किए जाते हैं ऑब्जेक्ट हैं जो इस क्लास को बढ़ाते हैं. कुछ, View के लिए सामान्य हैं ऑब्जेक्ट हैं, क्योंकि वे रूट View क्लास से इनहेरिट किए जाते हैं, जैसे id एट्रिब्यूट. अन्य एट्रिब्यूट को लेआउट माना जाता है पैरामीटर, जो किसी खास लेआउट ओरिएंटेशन की जानकारी देने वाले एट्रिब्यूट होते हैं View ऑब्जेक्ट का, जैसा कि उस ऑब्जेक्ट के पैरंट से बताया गया है ViewGroup ऑब्जेक्ट.

आईडी

किसी भी View ऑब्जेक्ट के साथ जुड़ा हुआ एक पूर्णांक आईडी हो सकता है ट्री के अंदर View की खास पहचान करें. जब ऐप्लिकेशन कंपाइल किया गया, यह आईडी एक पूर्णांक के रूप में बताया गया है, लेकिन आम तौर पर यह आईडी असाइन किया जाता है लेआउट एक्सएमएल फ़ाइल में, id एट्रिब्यूट में स्ट्रिंग के तौर पर. यह है एक्सएमएल एट्रिब्यूट का इस्तेमाल सभी View ऑब्जेक्ट में किया जाता है और इसे View क्लास. आप इसका इस्तेमाल अक्सर करते हैं. किसी आईडी के अंदर मौजूद आईडी के लिए सिंटैक्स एक्सएमएल टैग यहां दिया गया है:

android:id="@+id/my_button"

स्ट्रिंग की शुरुआत में at चिह्न (@) बताता है कि एक्सएमएल पार्सर, आईडी की बाकी स्ट्रिंग को पार्स करके बड़ा करता है और इसे इस तरह से पहचानता है: कोई आईडी संसाधन. प्लस का निशान (+) का मतलब है कि यह एक नया संसाधन नाम है जिसे R.java में आपके संसाधनों में बनाया और जोड़ा जाना चाहिए फ़ाइल से लिए जाते हैं.

Android फ़्रेमवर्क, आईडी के कई अन्य संसाधन उपलब्ध कराता है. किसी Android संसाधन आईडी के लिए, आपको प्लस चिह्न की ज़रूरत नहीं है, लेकिन आपको जोड़ना होगा android पैकेज नेमस्पेस इस तरह से है:

android:id="@android:id/empty"

android पैकेज नेमस्पेस से पता चलता है कि आपने रेफ़र किया है स्थानीय के बजाय, android.R संसाधन क्लास से एक आईडी संसाधन क्लास के बारे में ज़्यादा जानें.

व्यू बनाने और अपने ऐप्लिकेशन से उनका रेफ़रंस देने के लिए, किसी सामान्य व्यू का इस्तेमाल किया जा सकता है पैटर्न इस प्रकार है:

  1. लेआउट फ़ाइल में एक व्यू तय करें और उसे एक यूनीक आईडी असाइन करें, जैसा कि नीचे दिया गया उदाहरण:
    <Button android:id="@+id/my_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/my_button_text"/>
    
  2. व्यू ऑब्जेक्ट का एक इंस्टेंस बनाएं और उसे लेआउट से कैप्चर करें, आम तौर पर, onCreate() अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है तरीका, जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है:

    Kotlin

    val myButton: Button = findViewById(R.id.my_button)
    

    Java

    Button myButton = (Button) findViewById(R.id.my_button);
    

नई फ़ाइल बनाते समय, व्यू ऑब्जेक्ट के लिए आईडी तय करना ज़रूरी है RelativeLayout. रिलेटिव लेआउट में, सिबलिंग व्यू का लेआउट दूसरे से मिलता-जुलता हो सिबलिंग व्यू, जिसका रेफ़रंस यूनीक आईडी दिया जाता है.

पूरे ट्री में आईडी का यूनीक होना ज़रूरी नहीं है, लेकिन यह ज़रूरी है जो आपके खोजे जाने वाले पेड़ के हिस्से में मौजूद नहीं होते. अक्सर यह पूरा डेटा इसलिए, जब भी संभव हो इसे सबसे अलग बनाएं.

लेआउट पैरामीटर

layout_something नाम के एक्सएमएल लेआउट एट्रिब्यूट को तय किया गया है लेआउट पैरामीटर View के लिए जो इसके लिए सही हैं ViewGroup में यह मौजूद होता है.

हर ViewGroup क्लास एक नेस्ट की गई क्लास लागू करती है जो बढ़ी हुई है ViewGroup.LayoutParams. इस सब-क्लास में, हर तरह की प्रॉपर्टी शामिल हैं. इनमें से हर एक प्रॉपर्टी का साइज़ और पोज़िशन उसके डेटा की मदद से तय की जाती है चाइल्ड व्यू, जो व्यू ग्रुप के लिए सही हो. जैसा कि दूसरी इमेज में दिखाया गया है, पैरंट व्यू ग्रुप, हर चाइल्ड व्यू के लिए लेआउट पैरामीटर तय करता है. इसमें चाइल्ड व्यू भी शामिल है व्यू ग्रुप.

दूसरी इमेज. लेआउट के साथ व्यू हैरारकी का विज़ुअलाइज़ेशन पैरामीटर, जो हर व्यू से जुड़े होते हैं.

सेटिंग के लिए, हर LayoutParams सब-क्लास का अपना सिंटैक्स होता है वैल्यू. हर चाइल्ड एलिमेंट को ऐसा LayoutParams तय करना चाहिए जो अपने मूल के लिए उपयुक्त है, हालांकि यह भी एक अलग अपने बच्चों के लिए LayoutParams.

layout_width का इस्तेमाल करके, सभी व्यू ग्रुप में चौड़ाई और ऊंचाई शामिल है और layout_height हैं और हर व्यू के लिए इन्हें तय करना ज़रूरी है. कई LayoutParams में वैकल्पिक मार्जिन और बॉर्डर शामिल होते हैं.

आप सटीक माप के साथ चौड़ाई और ऊंचाई तय कर सकते हैं, लेकिन आप शायद ऐसा न करें अक्सर ऐसा करना चाहते हैं. अक्सर, आप इनमें से किसी एक स्थिरांक का इस्तेमाल करके चौड़ाई या ऊंचाई:

  • wrap_content: आपके व्यू को डाइमेंशन भी शामिल करते हैं जो कॉन्टेंट के मुताबिक ज़रूरी हैं.
  • match_parent: आपके व्यू को उसके पैरंट जितना बड़ा होने के लिए कहता है व्यू ग्रुप की अनुमति है.

आम तौर पर, हम लेआउट की चौड़ाई और ऊंचाई तय करने के लिए, निरपेक्ष इकाइयां, जैसे कि पिक्सल. रिलेटिव मेज़रमेंट का इस्तेमाल करना, एक बेहतर तरीका है. जैसे, सघनता-इंडिपेंडेंट पिक्सल यूनिट (डीपी), wrap_content या match_parent ऐसा इसलिए किया गया है, क्योंकि इससे आपका ऐप्लिकेशन सभी डिवाइसों पर सही तरीके से दिख सकता है डिवाइस की स्क्रीन के अलग-अलग साइज़. मेज़रमेंट के स्वीकार किए गए टाइप यहां बताए गए हैं लेआउट के बारे में जानकारी देने वाला संसाधन.

लेआउट की पोज़िशन

एक व्यू में आयताकार ज्यामिति है. इसमें एक स्थान है, जिसे बाएं और ऊपर निर्देशांक और दो डाइमेंशन होते हैं, जिन्हें चौड़ाई और ऊंचाई. जगह और डाइमेंशन की इकाई पिक्सल होती है.

तरीकों का इस्तेमाल करके, किसी व्यू की जगह की जानकारी वापस हासिल की जा सकती है getLeft() अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है और getTop(). पिछला कोड दिखाने वाले आयत का बायां (x) निर्देशांक लौटाता है क्लिक करें. बाद वाला चेकबॉक्स, रेक्टैंगल का सबसे ऊपर (y) कोऑर्डिनेट दिखाता है व्यू का प्रतिनिधित्व कर रहा है. ये तरीके इसके सापेक्ष दृश्य का स्थान वापस लौटाते हैं इसकी पैरंट कंपनी है. उदाहरण के लिए, जब getLeft(), 20 वैल्यू दिखाता है, तो इसका मतलब व्यू, सीधे तौर पर बाएं किनारे से 20 पिक्सल दाईं ओर है पैरंट.

इसके अलावा, गै़र-ज़रूरी कंप्यूटेशन से बचने के लिए आसान तरीके भी उपलब्ध हैं: नाम का getRight() अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है और getBottom(). ये विधियों से पता चलता है कि रेक्टैंगल, जो व्यू को दिखाता है. उदाहरण के लिए, getRight() को कॉल करने के लिए नीचे दिए गए कंप्यूटेशन के जैसा ही है: getLeft() + getWidth().

साइज़, पैडिंग, और मार्जिन

व्यू का साइज़, चौड़ाई और ऊंचाई की मदद से दिखाया जाता है. एक व्यू में दो पेयर हैं चौड़ाई और ऊंचाई के मानों के आधार पर किया जा सकता है.

पहले जोड़े को मेज़र की गई चौड़ाई कहा जाता है और मेज़र की गई ऊंचाई. इन डाइमेंशन से तय होता है कि व्यू कितना बड़ा होना चाहिए इसके पैरंट एलिमेंट में शामिल है. कॉल करके मेज़र किए गए डाइमेंशन देखे जा सकते हैं getMeasuredWidth() अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है और getMeasuredHeight().

दूसरे जोड़े को width और height के नाम से जाना जाता है या कभी-कभी ड्रॉइंग चौड़ाई और ड्रॉइंग ऊंचाई. ये डाइमेंशन, ड्रॉइंग के समय और लेआउट के बाद, स्क्रीन पर व्यू का असल साइज़. ये वैल्यू, मापी गई चौड़ाई और ऊंचाई से अलग हो सकती हैं. हालांकि, ऐसा ज़रूरी नहीं है. आपने लोगों तक पहुंचाया मुफ़्त में कॉल करके चौड़ाई और ऊंचाई का पता लगाया जा सकता है getWidth() अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है और getHeight().

अपने डाइमेंशन को मापने के लिए, व्यू अपनी पैडिंग (जगह) पर ध्यान देता है. पैडिंग इसे व्यू के बाएं, ऊपर, दाएं, और नीचे के हिस्सों के लिए पिक्सल में दिखाया जाता है. पैडिंग (जगह) का इस्तेमाल करके व्यू के कॉन्टेंट को पिक्सल. उदाहरण के लिए, दो की बाईं पैडिंग व्यू के कॉन्टेंट को दो पिक्सल तक पुश कर देती है दाईं ओर हाइलाइट करें. पैडिंग (जगह) को सेट करने के लिए setPadding(int, int, int, int) अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है का तरीका जानने के लिए, कॉल करें और getPaddingLeft(), getPaddingTop(), getPaddingRight(), और getPaddingBottom().

हालांकि, व्यू पैडिंग (जगह) तय कर सकता है, लेकिन यह मार्जिन के साथ काम नहीं करता. हालांकि, व्यू ग्रुप में मार्जिन भी काम करते हैं. यहां जाएं: ViewGroup और ViewGroup.MarginLayoutParams हमारा वीडियो देखें.

डाइमेंशन के बारे में ज़्यादा जानकारी के लिए, यहां देखें डाइमेंशन.

मार्जिन और पैडिंग को प्रोग्राम के हिसाब से सेट करने के अलावा, उन्हें भी सेट किया जा सकता है अपने एक्सएमएल लेआउट में बदलाव करें, जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है:

  <?xml version="1.0" encoding="utf-8"?>
  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical" >
      <TextView android:id="@+id/text"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_margin="16dp"
                android:padding="8dp"
                android:text="Hello, I am a TextView" />
      <Button android:id="@+id/button"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_marginTop="16dp"
              android:paddingBottom="4dp"
              android:paddingEnd="8dp"
              android:paddingStart="8dp"
              android:paddingTop="4dp"
              android:text="Hello, I am a Button" />
  </LinearLayout>
  

ऊपर दिए गए उदाहरण में, लागू किए गए मार्जिन और पैडिंग को दिखाया गया है. कॉन्टेंट बनाने TextView के चारों ओर समान मार्जिन और पैडिंग (जगह) लागू है, और Button से पता चलता है कि उन्हें अलग-अलग, किनारे.

सामान्य लेआउट

ViewGroup क्लास की हर सब-क्लास उन व्यू को दिखाएं जिन्हें आपने इसमें नेस्ट किया है. सबसे सुविधाजनक लेआउट टाइप और जो आपके लेआउट पदानुक्रम को छोटा रखने के लिए सर्वश्रेष्ठ टूल प्रदान करता है, ConstraintLayout.

Android में पहले से मौजूद कुछ सामान्य लेआउट टाइप नीचे दिए गए हैं प्लैटफ़ॉर्म.

लीनियर लेआउट बनाना

अपने बच्चों को एक हॉरिज़ॉन्टल या वर्टिकल लाइन में व्यवस्थित करता है और स्क्रोलबार, अगर विंडो की लंबाई, स्क्रीन की लंबाई से ज़्यादा होती है.

डाइनैमिक सूचियां बनाएं

अगर आपके लेआउट का कॉन्टेंट डाइनैमिक है या पहले से तय नहीं है, तो इस्तेमाल RecyclerView या इसकी एक सब-क्लास AdapterView. आम तौर पर, RecyclerView बेहतर विकल्प होता है, क्योंकि यह मेमोरी का इस्तेमाल करता है AdapterView की तुलना में ज़्यादा कुशलता से काम करते हैं.

RecyclerView और AdapterView में ये शामिल हैं:

सूची

स्क्रोल होने वाले सिंगल कॉलम की सूची दिखाता है.

ग्रिड

कॉलम और पंक्तियों की स्क्रोलिंग ग्रिड दिखाता है.

RecyclerView ज़्यादा सुविधाएं देता है और CANNOT TRANSLATE कोई कस्टम कार्रवाई बनाएं लेआउट मैनेजर.

अडैप्टर व्यू में डेटा भरना

आपके पास AdapterView अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है जैसे कि ListView या GridView के हिसाब से AdapterView इंस्टेंस को किसी Adapter, यह किसी बाहरी सोर्स से डेटा हासिल करके View बनाता है जो हर डेटा एंट्री को दिखाता है.

Android, Adapter की कई सब-क्लास उपलब्ध कराता है, जो काम के हैं किसी गड़बड़ी की वजह से अलग-अलग तरह का डेटा और बिल्डिंग व्यू हासिल करने के लिए AdapterView. दो सबसे आम अडैप्टर हैं:

ArrayAdapter
जब आपका डेटा सोर्स कोई कलेक्शन हो, तो इस अडैप्टर का इस्तेमाल करें. डिफ़ॉल्ट रूप से, ArrayAdapter कॉल करके, कलेक्शन वाले हर आइटम के लिए व्यू बनाता है toString() और कॉन्टेंट को TextView में डालना.

उदाहरण के लिए, अगर आपके पास स्ट्रिंग का ऐसा कलेक्शन है जिसे ListView, नए ArrayAdapter का इस्तेमाल शुरू करने के लिए इसका इस्तेमाल करें हर स्ट्रिंग और स्ट्रिंग अरे के लिए लेआउट तय करने का कंस्ट्रक्टर:

Kotlin

    val adapter = ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, myStringArray)
    

Java

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, myStringArray);
    

इस कंस्ट्रक्टर के लिए आर्ग्युमेंट यहां दिए गए हैं:

  • आपका ऐप्लिकेशन Context अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
  • ऐसा लेआउट जिसमें हर स्ट्रिंग के लिए TextView होता है कलेक्शन
  • स्ट्रिंग अरे

फिर कॉल करें setAdapter() अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है आपके ListView पर:

Kotlin

    val listView: ListView = findViewById(R.id.listview)
    listView.adapter = adapter
    

Java

    ListView listView = (ListView) findViewById(R.id.listview);
    listView.setAdapter(adapter);
    

हर आइटम के लुक को पसंद के मुताबिक बनाने के लिए, इसे बदला जा सकता है: आपके कलेक्शन में मौजूद ऑब्जेक्ट के लिए, toString() तरीका. या, अपने हर आइटम के लिए एक व्यू जो TextView—उदाहरण के लिए, अगर आपको ImageView हर अरे आइटम के लिए—ArrayAdapter क्लास बढ़ाएं और बदलें getView() का इस्तेमाल करें.

SimpleCursorAdapter
इस अडैप्टर का इस्तेमाल तब करें, जब आपका डेटा किसी Cursor. SimpleCursorAdapter का इस्तेमाल करते समय, इस्तेमाल करने के लिए लेआउट तय करें Cursor की हर पंक्ति और Cursor को अपने मनचाहे लेआउट के व्यू में डालना है. उदाहरण के लिए, अगर आपको लोगों के नाम और फ़ोन नंबर की सूची बनानी है, है, तो आप ऐसी क्वेरी कर सकते है जो Cursor दिखाती है जिसमें हर व्यक्ति के लिए एक लाइन और नाम और नंबर के कॉलम हों. आपने लोगों तक पहुंचाया मुफ़्त में फिर एक स्ट्रिंग अरे बनाएं, जिससे यह तय हो सके कि आपके कौनसे कॉलम Cursor जिसे हर नतीजे और पूर्णांक के लेआउट में रखना है अरे जो इससे जुड़े व्यू के बारे में बताता है, जो कि हर कॉलम में होना चाहिए रखा गया:

Kotlin

    val fromColumns = arrayOf(ContactsContract.Data.DISPLAY_NAME,
                              ContactsContract.CommonDataKinds.Phone.NUMBER)
    val toViews = intArrayOf(R.id.display_name, R.id.phone_number)
    

Java

    String[] fromColumns = {ContactsContract.Data.DISPLAY_NAME,
                            ContactsContract.CommonDataKinds.Phone.NUMBER};
    int[] toViews = {R.id.display_name, R.id.phone_number};
    

जब आप SimpleCursorAdapter को इंस्टैंशिएट करते हैं, तो हर नतीजे के लिए इस्तेमाल करने के लिए लेआउट, जिसमें Cursor में और ये दो सरणियां:

Kotlin

    val adapter = SimpleCursorAdapter(this,
            R.layout.person_name_and_number, cursor, fromColumns, toViews, 0)
    val listView = getListView()
    listView.adapter = adapter
    

Java

    SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
            R.layout.person_name_and_number, cursor, fromColumns, toViews, 0);
    ListView listView = getListView();
    listView.setAdapter(adapter);
    

इसके बाद, SimpleCursorAdapter की हर लाइन के लिए एक व्यू बनता है हर एलिमेंट को शामिल करके, दिए गए लेआउट का इस्तेमाल करके Cursor fromColumns आइटम, संबंधित toViews में जोड़े गए हैं व्यू.

अगर अपने ऐप्लिकेशन के चलने के दौरान, उसमें मौजूद डेटा में बदलाव किया जाता है आपके अडैप्टर से पढ़ा जा रहा है, कॉल करें notifyDataSetChanged(). इससे अटैच किए गए व्यू को सूचना मिलेगी कि डेटा बदल दिया गया है और वह रीफ़्रेश हो गया है वह भी ऐसा कर सकता है.

क्लिक इवेंट मैनेज करना

AdapterView में हर आइटम पर हुए क्लिक इवेंट का जवाब दिया जा सकता है यह तरीका लागू करके AdapterView.OnItemClickListener इंटरफ़ेस पर कॉपी करने की सुविधा मिलती है. उदाहरण के लिए:

Kotlin

listView.onItemClickListener = AdapterView.OnItemClickListener { parent, view, position, id ->
    // Do something in response to the click.
}

Java

// Create a message handling object as an anonymous class.
private OnItemClickListener messageClickedHandler = new OnItemClickListener() {
    public void onItemClick(AdapterView parent, View v, int position, long id) {
        // Do something in response to the click.
    }
};

listView.setOnItemClickListener(messageClickedHandler);

अन्य संसाधन

Google Analytics 4 में देखें कि सनफ़्लावर GitHub पर डेमो ऐप्लिकेशन डाउनलोड करें.