मेरे पास एक एंड्रॉइड लिस्ट व्यू नहीं है, जिसमें एक बटन होता है जिसे क्लिक करने पर चेक करने की आवश्यकता होती है। आप शायद मैं हरे रंग की प्रारंभिक करने के लिए पृष्ठभूमि बदल रहा हूँ देख सकते हैं, जब मैं "चेकबॉक्स" पर क्लिक करें पृष्ठभूमि लाल होने की जरूरत है (यह सिर्फ एक परीक्षण हैएंड्रॉइड लिस्ट व्यू में देखें
public View getView(final int position, View convertView, ViewGroup parent) {
final ViewHolder holder;
LayoutInflater inflater = this._context.getLayoutInflater();
if (convertView == null) {
convertView = inflater.inflate(R.layout.checkbox_cell, null);
holder = new ViewHolder();
holder.checkbox = (CheckBox) convertView.findViewById(R.id.button);
holder.textView = (TextView) convertView.findViewById(R.id.textView);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
if(holder.checkbox.isChecked()) {
convertView.setBackgroundColor(Color.RED);
holder.textView.setBackgroundColor(Color.RED);
convertView.invalidate();
} else {
convertView.setBackgroundColor(Color.GREEN);
}
holder.checkbox.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Arrays.sort(_context.checkBoxIds);
int index = Arrays.binarySearch(_context.checkBoxIds, position);
if (((CheckBox) v).isChecked()) {
holder.textView.setPaintFlags(holder.textView.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
} else {
holder.textView.setPaintFlags(holder.textView.getPaintFlags() & (~Paint.STRIKE_THRU_TEXT_FLAG));
}
holder.textView.setBackgroundColor(Color.RED);
notifyDataSetChanged();
}
});
return convertView;
}
: क्लिक करें घटना काम कर रहा है देखें कि यूआई अपडेट क्या है)। मैंने onClick
में विचारों को अपडेट करने का प्रयास किया, लेकिन यह काम नहीं कर रहा है। onClick
के बाद मैं notifyDataSetChanged()
पर कॉल करता हूं यह देखने के लिए कि UI रीफ्रेश होने पर यूआई बदलता है या नहीं। holder.checkbox.isChecked()
सत्य प्रतीत होता है लेकिन जब मैं पृष्ठभूमि को लाल पर सेट करता हूं तो यूआई अपडेट नहीं होगा। क्या किसी को पता है कि यहां क्या गलत है? मैं इस समय अनजान हूँ।
क्या आपके कोड के अंदर @ ओवरराइड एनोटेशन है और आप बस अपने ऑनक्लिक लिस्टनर के लिए पोस्ट करना भूल गए हैं? – Opiatefuchs
आह हाँ, इसे पोस्ट करना भूल गया। ओवरराइड है :) –
@LeonBoon: [NotifyDataSetChanged()] (http://stackoverflow.com/a/12229903/1920735) दृश्य को फिर से निकालने के लिए सूचीदृश्य से पूछेगा, इसलिए जब यह स्वयं को फिर से चलाएगा, तो यह एक नए धारक को संदर्भित करेगा .checkbox.is चेक(), जो डिफ़ॉल्ट रूप से गलत होगा (अनुमान), इसलिए कोई लाल रंग पृष्ठभूमि रंग प्रकट नहीं होता है। – avinash