ViewPager 内には、テキストビューと画像を含む単一選択回答のグリッドを持つ gridview があります。回答をクリックすると、テキストビューの色が赤に変わり、それ以外の場合は白になります。最初のものを除く他のすべての回答に対しては正常に機能します。グリッドビューで最初の回答を最初にクリックしたとき、色は変わりません。2 回目のクリックで赤に変わりますが、オプションを変更すると、最初のオプションの赤の色が白に変わりません。下の画面を見て、
申し訳ありませんが、私は新しいユーザーであるため、画面の送信は許可されていません...
内部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()
方法:
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 の最初の項目に対して機能せず、答えに従いますが、成功しませんでした...
どこが間違っているのですか?