2011-07-05 24 views
8

द्वारा एक दृश्य प्राप्त करें मैं एक महीने कैलेंडर प्रदर्शित करने के लिए ग्रिड व्यू का उपयोग कर रहा हूं। जब मैं कैलेंडर पर किसी दिनांक को स्पर्श करता हूं, तो इसी सेल को अपनी पृष्ठभूमि और टेक्स्ट रंग बदलकर हाइलाइट किया जाता है। सब कुछ इस तरह के अलावा आकर्षण की तरह काम करता है कि अगर मैं एक नई तारीख चुनता हूं तो मैं एक सेल को हाइलाइट नहीं कर सकता।ग्रिड व्यू:

जब मैं मैं स्थिति याद कोई तिथि क्लिक करें, तो जब मैं एक नया एक मुझे पता है मैं कहाँ पहले क्लिक चुना है:

protected OnClickListener onClicThisMonthDate(final int position) 
{ 
    return new OnClickListener() { 

     @Override 
     public void onClick(View v) 
     { 
      if(prevDateSelected > -1) 
      { 
       //Get the view by the oldPosition 
       //Change its background and text color 
      } 
      prevDateSelected = position; 
      TextView casecal = (TextView) v.findViewById(R.id.case_cal); 
      casecal.setBackgroundColor(Color.rgb(93, 94, 94)); 
      casecal.setTextColor(Color.WHITE); 
     } 
    }; 
} 

वहाँ अपनी स्थिति से एक दृश्य प्राप्त करने के लिए एक समाधान है? सेल का चयन करने और अन्य सभी को अचयनित करने का सबसे प्रभावी तरीका क्या है? नोट: "सेल का चयन करें" से मेरा मतलब यह है कि इसे शैली बदलकर इसे हाइलाइट करें।

उत्तर

17

ViewGroup.getChildAt समूह में निर्दिष्ट स्थिति पर दृश्य देता है।

GridView.setSelection स्थिति में दृश्य का चयन करता है और अन्य विचारों को अचयनित करता है।

+1

ग्रिडव्यू.सेट चयन दुर्भाग्य से टच मोड में काम नहीं कर रहा है। बच्चे को प्राप्त करें ठीक लगता है, लेकिन क्या इस दृश्य को अपडेट करने का कोई तरीका है, न कि सभी ग्रिडव्यू? – grunk

+0

कॉल व्यू.in validate() (यूआई थ्रेड से) या View.postInvalidate() (एक गैर-यूआई थ्रेड से) बस एक दृश्य को अपडेट करने के लिए। – xevincent

संबंधित मुद्दे