हाल ही में मैं इस काम किया। मान लीजिए कि मैं सूची में एक बटन अदृश्य करना चाहता हूं। फिर सूची एडाप्टर के getView में उस बटन को वैश्विक वेक्टर में जोड़ें। नीचे की तरह
class ViewCache
{
private View baseView;
private Button button;
public ViewCache(View baseView)
{
this.baseView = baseView;
}
public Button getButton() {
if(button == null) {
button = (Button) baseView.findViewById(R.id.DeleteChatFrndBtn);
}
return button;
}
}
//it is necessary sometimes because otherwise in some cases the list scroll is slow.
अब आप दिखाई ListItem के बटन onClicking कुछ अन्य बटन चाहते -
Button del_btn = viewCache.getFrame();
view_vec.add(del_btn);
यहाँ viewCache ViewCache वर्ग के एक वस्तु है, जो नीचे की तरह sumthing जाता है। फिर नीचे दिए गए कोड की तरह है -
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()) {
case R.id.EditChatFrndBtn:
length = view_vec.size();
for(int i = 0; i < length; i++) {
Button btn = (Button) view_vec.elementAt(i);
btn.setVisibility(View.VISIBLE);
}
doneBtn.setVisibility(View.VISIBLE);
editBtn.setVisibility(View.INVISIBLE);
break;
}
}
R.id.EditChatFrndBtn के बजाय
जिनमें से आप अदृश्य/दिखाई ListItem के बटन पर क्लिक पर अपने बटन आईडी डाल दिया।
हाय, मुझे अपने हेडर में मौजूद किसी अन्य बटन के क्लिक पर प्रत्येक सूची आइटम पर शो बटन की आवश्यकता है। क्या आप कृपया बता सकते हैं कि इस व्यू वेक्टर क्या है जिसका आपने उपयोग किया था और क्या फ्रेम() करता है? – Nitish
देखें कि आपको इसके निर्माण के समय सभी बटन (दृश्य) का ट्रैक रखना होगा। इसके बाद ओटीवी आप प्रत्येक सूची आइटम बटन को अलग से एक्सेस नहीं कर सकते हैं। इसलिए जब प्रत्येक बटन दृश्य बनाया जाता है तो मैं इसे एक दृश्य वेक्टर में डालता हूं। यह वेक्टर सभी सूची आइटम बटन दृश्य का ट्रैक रखेगा। – Debarati
समझ गया, और एडाप्टर में व्यूकेच धारक है। क्या मैं सही हू? – Nitish