在ViewPager中,有一个网格视图,其中有一个带有文本视图和图像的单选答案网格。当我点击任何答案时,文本视图应该将其颜色更改为红色或白色。除了第一个答案,其他所有答案都可以正常工作。当我第一次点击网格视图中的第一个答案时,它不会更改颜色,第二次点击时它会变成红色,但是当我更改选项时,第一个选项的红色不会更改为白色。请看下面的屏幕,
抱歉,由于我是新用户,不允许提交屏幕。。。
在< code > grid fragment # on activity created()内部:
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()
方法:
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;
}
我看到了这个链接:OnClickListener在GridView中的第一个项目不工作,并按照答案操作,但没有成功……
我哪里出错了?
在问题编辑中回答。转换为社区wiki答案。查看当问题的答案添加到问题本身时,适当的操作是什么?)
《任择议定书》写道:
已经解决了。。。。
我在以下代码中添加了gridview.setBackgroundColor(Color.TRANSPARENT);
:
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());
}
我在创建基于GridView的日历时遇到问题。下面是网格: 这应该是一个包含事件的日历,所以我让适配器实现OnClickListener,并为日历中的每个按钮设置侦听器。它适用于除第一个按钮(在本例中为30号)以外的每个按钮。当我单击它时,它就是不起作用,但当我在尝试单击第一个按钮后单击另一个按钮时,它会在单击另一按钮之前对第一个按钮执行单击。 我已经浏览了大约10页的相关问题,没有发现有人有这个
我有GridView,其中项目是带有图像(ImageView)和标题(TextView)的视图。我想在这个ImageView上执行onClick操作,但不是在整个GridView项上。如果我使用这个代码: 只有第二次单击ImageView才能进行操作。如何通过第一次单击GridView在ImageView上执行操作?
解释 最近,我一直在与碎片和viewpager进行大量的斗争。 我发现ViewPager可以保存你想要的任意多的片段。当它首次实例化时,根据类型(vsFragmentPagerAdapter和FragmentStatePagerAdapter之间的差异),它将创建所有片段或只创建“需要的”片段。 您可以看到,返回null,尽管您是在被触发后调用此方法的。 如果您决定将保留的上下文强制转换为活动,以
所以基本上我有一个动态添加和删除片段的浏览器。我要做的是在片段中设置onClick函数,并执行与该片段相关的操作。以下是我的代码。 MainFragment.java } 然后我在Fragment的xml中使用了OnClick属性,并在我的MainActivity中创建了一个函数,这也不起作用。 我错过了什么?
在下面的代码中,如何避免处理的第一行? file1.csv是: 而file2.csv是: 我试图减去人和他/她的宠物的年龄,如果它出现在两个CSV中,但我得到以下错误,因为它也处理第一行:
是否可以在ViewPager中单击ListView的第一项? 如果像这样运行测试,第一项永远不会被单击。 是否有其他方法单击列表的第一项?