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?
Avez-vous résolu? – vandzi
Oui, j'ai joint le code mis à jour. S'il vous plaît se référer à la solution. – Archa
Merci, je vais vérifier! – vandzi