मेरे पास एक कस्टम सरणीकरण के साथ एक सूचीदृश्य है जो लगभग 15 तारों को संभालता है। प्रत्येक पंक्ति की शैली वैकल्पिक होती है (उन लेबलों के लिए लेबल और मानों के बीच - उदाहरण के लिए पंक्ति 1 "ईमेल पता" हो सकता है और पंक्ति 2 वास्तविक ईमेल पता होगा)। मैं सरणीकरण की getView() विधि में इस तरह की वैकल्पिक रूप से प्रत्येक पंक्ति की शैली बदल रहा हूं। तो यदि वर्तमान स्थिति में आइटम एक लेबल है, तो मैं स्टाइल को डिफ़ॉल्ट पंक्ति शैली से बदल दूंगा (जो वैल्यू उन पर लागू होता है)। जब सूचीदृश्य पहले लोड होता है, स्टाइल सही है और मैं इसे कैसे बनना चाहता हूं। यदि मैं सूची को धीरे-धीरे ऊपर या नीचे स्क्रॉल करता हूं, तो वह उस तरह से रहता है। हालांकि, अगर मैं सूची को ऊपर और नीचे स्क्रॉल करता हूं, तो मूल्य पंक्तियों की स्टाइल लेबल के उसमें बदलना शुरू हो जाती है जब तक कि सभी पंक्तियों में लेबल पंक्ति की स्टाइल न हो। क्या किसी को पता है कि यह क्यों हो रहा है? मैंने ऐप में अन्य सूचीदृश्यों पर कस्टम एडेप्टर का उपयोग किया है, इस तरह की कोई समस्या नहीं है।जब मैं एक कस्टम एडाप्टर के साथ एक सूची दृश्य को तेज़ी से ऊपर और नीचे स्क्रॉल करता हूं, getView() अजीब व्यवहार करना शुरू कर देता है। क्यूं कर?
संपादित करें: यह पता चला है कि यह पोर्ट्रेट-> परिदृश्य अभिविन्यास परिवर्तनों पर लेबल स्टाइल में सभी पंक्तियों को भी बदलता है। यह परिदृश्य पर नहीं करता-> चित्र परिवर्तन। नीचे मैं एडाप्टर का उपयोग कर रहा हूँ। क्या मैं कुछ भूल रहा हूँ?
public class DetailsAdapter extends ArrayAdapter<String> {
private TextView text = null;
private String item = null;
public DetailsAdapter(Context context, int resource, int textViewResourceId, String[] objects) {
super(context, resource, textViewResourceId, objects);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
text = (TextView) super.getView(position, convertView, parent);
item = getItem(position);
if (item.equals("Name") || item.equals("Mobile") || item.equals("Home") || item.equals("Email") || item.equals("Address")) {
text.setBackgroundColor(0xFF575757);
text.setTextSize(15);
text.setTypeface(null, Typeface.BOLD);
text.setPadding(8, 5, 0, 5);
} else {
text.setPadding(15, 15, 0, 15);
}
return text;
}
@Override
public boolean isEnabled(int position) {
item = getItem(position);
if (item.equals("Name") || item.equals("Mobile") || item.equals("Home") || item.equals("Email") || item.equals("Address")) {
return false;
} else {
return true;
}
}
}
क्या आप अपना getView कोड दिखा सकते हैं? –
आरंभ में सूचीदृश्य लोड होने पर कितनी पंक्तियां प्रस्तुत की जाएंगी। कस्टमडाप्टर की गेटव्यू विधि का उपयोग कर एक पंक्ति के लिए दृश्य बनाना कुछ हद तक अत्यधिक स्मृति गहन कार्य है। यह आपके लेबल के झुकाव प्रतिपादन का कारण है। अपने कोड की झलक लिखें .. क्या आपको एक समाधान मिल सकता है –