व्यू में लेआउट
लेआउट, आपके ऐप्लिकेशन के यूज़र इंटरफ़ेस का स्ट्रक्चर तय करता है. जैसे,
एक
गतिविधि पर टैप करें. इसमें सभी एलिमेंट
लेआउट को बनाने के लिए,
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
संसाधन क्लास से एक आईडी
संसाधन क्लास के बारे में ज़्यादा जानें.
व्यू बनाने और अपने ऐप्लिकेशन से उनका रेफ़रंस देने के लिए, किसी सामान्य व्यू का इस्तेमाल किया जा सकता है पैटर्न इस प्रकार है:
- लेआउट फ़ाइल में एक व्यू तय करें और उसे एक यूनीक आईडी असाइन करें, जैसा कि
नीचे दिया गया उदाहरण:
<Button android:id="@+id/my_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/my_button_text"/>
- व्यू ऑब्जेक्ट का एक इंस्टेंस बनाएं और उसे लेआउट से कैप्चर करें,
आम तौर पर,
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 पर डेमो ऐप्लिकेशन डाउनलोड करें.