2012-10-05 2 views
0

Dans ViewPager, il y a un gridview qui a une grille de réponses à choix unique avec textviews et images. Quand j'ai cliqué sur n'importe quelle réponse, le textview devrait changer sa couleur en ROUGE autrement BLANC. Son fonctionne bien pour toutes les autres réponses sauf le le premier. Quand j'ai cliqué sur la première réponse dans gridview, cela ne change pas la couleur, au deuxième clic il devient ROUGE, mais quand je change l'option, la couleur ROUGE ne change pas en BLANC pour la première option. Regardez l'écran ci-dessous,OnClickListener ne fonctionne pas pour le premier élément dans GridView à l'intérieur de ViewPager

Désolé soumission écran n'est pas autorisé pour moi que je suis un nouvel utilisateur ...

intérieur GridFragment#OnActivityCreated():

gridview.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View v, int position, long arg3) { 

      currentPage = new TestTopics().getCuttentPage(); 

      tv = ((ViewHolder) v.getTag()).lbl;     

      if(selectedValues.containsKey(currentPage)) 
      { 

       selectedValues.get(currentPage).setTextColor(Color.WHITE); 
       selectedValues.remove(currentPage); 
       selectedValues.put(currentPage, tv); 
       selectedValues.get(currentPage).setTextColor(Color.RED); 



      } 
      else 
      { 

       selectedValues.put(currentPage, tv); 
       selectedValues.get(currentPage).setTextColor(Color.RED); 

      }    

     } 
    });  

méthode ImageAdapter#getView():

public View getView(int position, View convertView, ViewGroup parent) { 

    numTopics = mTopicList.getNumTopics(); 
    ViewHolder holder; 
    holder = new ViewHolder(); 

    if (convertView == null) { 

     int layoutId = R.layout.demo_pager_grid_item; 
     LayoutInflater li = ((Activity) mContext).getLayoutInflater(); 
     childView = li.inflate (layoutId, null); 

     holder.img = (ImageView) childView.findViewById(R.id.image); 
     holder.lbl = (TextView) childView.findViewById(R.id.title); 

     childView.setTag(holder); 

    } else { 

     childView = convertView; 
     holder = (ViewHolder) childView.getTag(); 
    }     

    if (childView != null) { 
     // Set the width and height of the child view. 
     childView.setLayoutParams(new GridView.LayoutParams(mCellWidth, mCellHeight)); 

     int j = position + mImageOffset; 

     if (j < 0) j = 0; 
     if (j >= numTopics) j = numTopics - 1; 


     imageView = (ImageView) childView.findViewById (R.id.image); 
     if (imageView != null) { 
      Resources res = mContext.getResources(); 
      int imagePadding = res.getDimensionPixelSize (R.dimen.grid_image_padding); 

      imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
      imageView.setBackgroundResource (R.color.background_grid1_cell); 
      imageView.setPadding (imagePadding, imagePadding, imagePadding, imagePadding); 
      imageView.setImageBitmap (mTopicList.getTopicImage (j)); 
      imageView.setTag (new Integer (j)); 


     } 
     textView = (TextView) childView.findViewById (R.id.title); 

     if (textView != null) 
     {   

       textView.setText(mTopicList.getTopicTitle (j)); 
       textView.setTag (mTopicList.getTopicTitle (j)); 
       holder.lbl.setTag(mTopicList.getTopicTitle (j)); 


     } 
    } 



    return childView; 

} 

J'ai vu ce lien: OnClickListener not working for first item in GridView, et suivez la réponse, mais je n'ai pas réussi ...

Où je me trompe?

+0

Avez-vous résolu? – vandzi

+0

Oui, j'ai joint le code mis à jour. S'il vous plaît se référer à la solution. – Archa

+0

Merci, je vais vérifier! – vandzi

Répondre

0

Répondu à une question edit. Converti en une réponse wiki communautaire. Voir What is the appropriate action when the answer to a question is added to the question itself?)

L'OP a écrit:

ont résolu ....

J'ai ajouté gridview.setBackgroundColor(Color.TRANSPARENT); dans mon code suivant:

if(patternItems.containsKey(currentPage) && selectedValues.containsKey(currentPage)) 
      { 

       selectedValues.get(currentPage).setTextColor(Color.WHITE); 
       selectedValues.remove(currentPage); 
       selectedValues.put(currentPage, tv); 
       selectedValues.get(currentPage).setTextColor(Color.RED); 
       **gridview.setBackgroundColor(Color.TRANSPARENT);** 
       patternItems.remove(currentPage);      
       patternItems.put(currentPage,tv.getText().toString()); 
      } 
      else 
      { 
       selectedValues.put(currentPage, tv); 
       selectedValues.get(currentPage).setTextColor(Color.RED); 
       **gridview.setBackgroundColor(Color.TRANSPARENT);** 
       patternItems.put(currentPage,tv.getText().toString());                        
      } 
Questions connexes