我的寻呼机适配器有问题。我有一个ImageView
,TextView
布局膨胀。我的适配器将显示一些图像和图像的说明。我想实现对寻呼机的onClick
,当我单击图像时,TextView
将显示/隐藏。
在我的代码片段下面:
private class MyAdapter extends PagerAdapter implements ViewPager.OnClickListener {
private ArrayList<Bitmap> images;
private LayoutInflater inflater;
private Context context;
private ViewPager viewPager;
private TextView textViewDescription;
private ImageView imageViewDescription;
public MyAdapter(Context context, ArrayList<Bitmap> images, ViewPager viewPager) {
this.context = context;
this.images = images;
this.viewPager = viewPager;
inflater = LayoutInflater.from(context);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
@Override
public int getCount() {
return images.size();
}
@Override
public Object instantiateItem(ViewGroup view, final int position) {
LayoutInflater inflater = (LayoutInflater) view.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View page = inflater.inflate(R.layout.item_image_preview, null);
ImageView myImage = (ImageView) page.findViewById(R.id.imageView_preview);
TextView textView= (TextView) page.findViewById(R.id.textView_image_description);
textViewDescription = textView;
imageViewDescription = myImage;
imageDescription = arraydescription.get(position);
textView.setText(arraydescription.get(position));
myImage.setImageBitmap(images.get(position));
page.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
if (isDescriptionVisible) {
textViewDescription.setVisibility(View.GONE);
} else {
textViewDescription.setVisibility(View.VISIBLE);
}
isDescriptionVisible = !isDescriptionVisible;
Log.i("TAG", "This page was clicked: " + position);
}
});
((ViewPager) view).addView(page, 0);
return page;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view.equals(object);
}
@Override
public void onClick(View v) {
if (isDescriptionVisible) {
textViewDescription.setVisibility(View.GONE);
} else {
textViewDescription.setVisibility(View.VISIBLE);
}
isDescriptionVisible = !isDescriptionVisible;
}
}
问题是:如果位置 2 的寻呼机,我单击图像,则位置 2 处的TextView
将显示/隐藏。但是当我滑到位置 1 并单击图像时,显示/隐藏的TextView
仍然在位置 2。它就像我只能处理的一个位置。我读了一个关于这个例子的问题,但它仍然不起作用。
您需要保存每个页面的状态。试试下面的代码。我已将状态设置为标签。
public Object instantiateItem(ViewGroup view, final int position) {
LayoutInflater inflater = (LayoutInflater) view.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View page = inflater.inflate(R.layout.item_image_preview, null);
final ImageView myImage = (ImageView) page.findViewById(R.id.imageView_preview);
final TextView textView= (TextView) page.findViewById(R.id.textView_image_description);
imageDescription = arraydescription.get(position);
textView.setText(arraydescription.get(position));
myImage.setImageBitmap(images.get(position));
page.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
boolean isVisible=textView.getTag()==null?true:(boolean)textView.getTag();
if (isVisible) {
textView.setVisibility(View.GONE);
} else {
textView.setVisibility(View.VISIBLE);
}
textView.setTag(!isVisible);
Log.i("TAG", "This page was clicked: " + position);
}
});
((ViewPager) view).addView(page, 0);
return page;
}