OnClickListener不工作的第一个项目里面的GridView ViewPager [英] OnClickListener not working for first item in GridView inside ViewPager
问题描述
里面ViewPager,也有单项选择题的答案跟textviews和图像的网格一个gridview。当我在任何答案点击,TextView的应该改变其颜色为红色白别的。其工作罚款,但在第一个所有其他的答案。当我第一次点击的gridview的第一个答案,它不会改变颜色,在第二次点击它变成红色,但后来当我更改选项,红色不会更改为白色第一个选项。看看下面的屏幕,
对不起屏幕提交不允许我为我是一个新的用户...
在 GridFragment#OnActivityCreated()
:
gridview.setOnItemClickListener(新OnItemClickListener(){ @覆盖
公共无效onItemClick(适配器视图<>母公司,视图V,INT位置,长ARG3){ 当前是=新TestTopics()getCuttentPage()。 电视=((ViewHolder)v.getTag())LBL。 如果(selectedValues.containsKey(当前页))
{ selectedValues.get(当前页).setTextColor(Color.WHITE);
selectedValues.remove(当前页);
selectedValues.put(当前是,电视);
selectedValues.get(当前页).setTextColor(Color.RED); }
其他
{ selectedValues.put(当前是,电视);
selectedValues.get(当前页).setTextColor(Color.RED); } }
});
ImageAdapter#getView()
方法:
公共查看getView(INT位置,查看convertView,父母的ViewGroup){ numTopics = mTopicList.getNumTopics();
ViewHolder持有人;
持有人=新ViewHolder(); 如果(convertView == NULL){ INT layoutId = R.layout.demo_pager_grid_item;
LayoutInflater李=((活动)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(保持器); }其他{ childView = convertView;
支架=(ViewHolder)childView.getTag();
} 如果(childView!= NULL){
//设置子视图的宽度和高度。
childView.setLayoutParams(新GridView.LayoutParams(mCellWidth,mCellHeight)); INT J =位置+ mImageOffset; 如果(J℃,)J = 0;
如果(J> = numTopics)J = numTopics - 1;
ImageView的=(ImageView的)childView.findViewById(R.id.image);
如果(ImageView的!= NULL){
资源解析度= 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(新的整数(J));
}
的TextView =(TextView中)childView.findViewById(R.id.title); 如果(TextView的!= NULL)
{ textView.setText(mTopicList.getTopicTitle(J));
textView.setTag(mTopicList.getTopicTitle(J));
holder.lbl.setTag(mTopicList.getTopicTitle(J));
}
} 返回childView;}
我已经看到此链接:<一个href=\"http://stackoverflow.com/questions/11778228/onclicklistener-not-working-for-first-item-in-gridview\">OnClickListener不工作的GridView控件中第一个项目,然后按照答案,但没有得到它成功...
我要去哪里错了?
在一个问题回答的编辑。转换为社区维基答案。见<一href=\"http://meta.stackoverflow.com/questions/267434/what-is-the-appropriate-action-when-the-answer-to-a-question-is-added-to-the-que\">What是当一个问题的答案将被添加到问题本身进行相应的操作?)
在OP写道:
已经解决了吧....
我添加
gridview.setBackgroundColor(Color.TRANSPARENT);
在我的下面code:如果(patternItems.containsKey(当前页)及和放大器; selectedValues.containsKey(当前页))
{ selectedValues.get(当前页).setTextColor(Color.WHITE);
selectedValues.remove(当前页);
selectedValues.put(当前是,电视);
selectedValues.get(当前页).setTextColor(Color.RED);
** gridview.setBackgroundColor(Color.TRANSPARENT)**
patternItems.remove(当前页);
patternItems.put(当前是,tv.getText()的toString());
}
其他
{
selectedValues.put(当前是,电视);
selectedValues.get(当前页).setTextColor(Color.RED);
** gridview.setBackgroundColor(Color.TRANSPARENT)**
patternItems.put(当前是,tv.getText()的toString());
}
块引用>Inside ViewPager, there is a gridview which has a grid of single choice answers with textviews and images. When i clicked on any answer, the textview should change its color to RED else WHITE. Its working fine for all the other answers except the first one. When i first clicked on first answer in gridview, it doesn't change the color, on second click it turns to RED, but then when i change the option, the RED color doesn't change to WHITE for first option. Look at the screen below,
Sorry Screen submission is not allowed for me as i am a new user...
Inside
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); } } });
ImageAdapter#getView()
method: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; }
I have seen this link : OnClickListener not working for first item in GridView, and follow the answer, but didn't get succeed on it...
Where I'm going wrong?
解决方案Answered in a question edit. Converted to a community wiki answer. See What is the appropriate action when the answer to a question is added to the question itself? )
The OP wrote:
have solved it....
I added
gridview.setBackgroundColor(Color.TRANSPARENT);
in my following code :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()); }
这篇关于OnClickListener不工作的第一个项目里面的GridView ViewPager的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!