Viewpager onClickListener在android中引用了错误的视图
首先,viewpage预加载下一页和上一页。因此,如果我当前查看PageB,它实际上也存储了PageA和PageC视图 这就造成了问题。当我在pageB中时,我按下一个onClickListener,它会得到pageC的位置,而且,我想在pageB中更改一个imageview,但当我按下按钮后,结果是更改了pageC中的imageview 这是代码片段,我扩展了PagerAdapterViewpager onClickListener在android中引用了错误的视图,android,events,imageview,android-viewpager,fragment,Android,Events,Imageview,Android Viewpager,Fragment,首先,viewpage预加载下一页和上一页。因此,如果我当前查看PageB,它实际上也存储了PageA和PageC视图 这就造成了问题。当我在pageB中时,我按下一个onClickListener,它会得到pageC的位置,而且,我想在pageB中更改一个imageview,但当我按下按钮后,结果是更改了pageC中的imageview 这是代码片段,我扩展了PagerAdapter public class CustomPagerAdapter extends PagerAdapter
public class CustomPagerAdapter extends PagerAdapter {
private ArrayList<Item> items;
private LinearLayout rootView;
private NetworkImageView album;
private ImageView left;
private ImageView right;
private int imagePos;
private String[] img;
private WebView mWebView;
private ImageView i;
private ImageView i2;
private WebView fbLikeBtn;
private WebView sinaLikeBtn;
private String type;
private TextView report;
private TextView id;
private TextView name;
private TextView age_brand;
private TextView gender_model;
private TextView feature;
private TextView remarks;
private TextView location;
private TextView date;
private TextView reward;
private ImageView find;
private ImageView email;
private ImageView call;
private ImageView share;
private ImageView gps;
private ImageView play_record;
private Item item;
private String isComplete;
private LinearLayout reward_layout;
private DownloadManager mgr;
private boolean isStartPlay;
private MediaPlayer myPlayer;
private BroadcastReceiver onComplete;
private String intent_type_string;
private String intent_type;
private String intent_msg;
public CustomPagerAdapter(ArrayList<Item> items) {
this.items = items;
}
@Override
public Object instantiateItem(ViewGroup container, final int position) {
rootView = (LinearLayout) LayoutInflater.from(ctx).inflate(R.layout.item_detail, null);
item = (Item) items.get(position);
album = (NetworkImageView) rootView.findViewById(R.id.img);
left = (ImageView) rootView.findViewById(R.id.left);
right = (ImageView) rootView.findViewById(R.id.right);
share = (ImageView) rootView.findViewById(R.id.share);
find = (ImageView) rootView.findViewById(R.id.find);
email = (ImageView) rootView.findViewById(R.id.email);
call = (ImageView) rootView.findViewById(R.id.call);
gps = (ImageView) rootView.findViewById(R.id.gps);
report = (TextView) rootView.findViewById(R.id.report);
id = (TextView) rootView.findViewById(R.id.id);
name = (TextView) rootView.findViewById(R.id.name);
age_brand = (TextView) rootView.findViewById(R.id.age_brand);
gender_model = (TextView) rootView.findViewById(R.id.gender_model);
feature = (TextView) rootView.findViewById(R.id.feature);
remarks = (TextView) rootView.findViewById(R.id.remarks);
location = (TextView) rootView.findViewById(R.id.location);
date = (TextView) rootView.findViewById(R.id.date);
reward = (TextView) rootView.findViewById(R.id.reward);
play_record = (ImageView) rootView.findViewById(R.id.play_record);
reward_layout = (LinearLayout) rootView.findViewById(R.id.reward_layout);
name.setText(getResources().getString(R.string.name) + item.name);
imagePos = 0;
if (item.image_url != null) {
img = new String[item.image_url.length];
for (int i = 0; i < item.image_url.length; i++) {
img[i] = item.image_url[i];
}
if (img.length == 1) {
album.setImageUrl(Constant.request_imageFolder + item.user_id + "/" + item.image_url[0], mImageLoader);
left.setVisibility(View.GONE);
right.setVisibility(View.GONE);
} else {
album.setImageUrl(Constant.request_imageFolder
+ item.user_id + "/" + item.image_url[0],
mImageLoader);
left.setVisibility(View.GONE);
left.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (imagePos != 0) {
imagePos--;
right.setVisibility(View.VISIBLE);
album.setImageUrl(Constant.request_imageFolder
+ item.user_id + "/"
+ item.image_url[imagePos],
mImageLoader);
if (imagePos == 0)
left.setVisibility(View.GONE);
}
}
});
right.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (imagePos != item.image_url.length - 1) {
imagePos++;
left.setVisibility(View.VISIBLE);
album.setImageUrl(Constant.request_imageFolder
+ item.user_id + "/"
+ item.image_url[imagePos],
mImageLoader);
if (imagePos == item.image_url.length - 1)
right.setVisibility(View.GONE);
}
}
});
}
album.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
item = (Item) items.get(position);
Intent intent = new Intent(ctx, Zoom.class);
intent.putExtra("photo_list", item.image_url);
intent.putExtra("pos", imagePos);
intent.putExtra("user_id", item.user_id);
startActivity(intent);
}
});
} else {
album.setDefaultImageResId(R.drawable.image_null);
album.setImageResource(R.drawable.image_null);
left.setVisibility(View.GONE);
right.setVisibility(View.GONE);
}
gps.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
item = (Item) items.get(position);
Intent intent = new Intent(ctx, MapSingle.class);
intent.putExtra("msg", "ID:" + item.id + " " + intent_type_string + " - " + item.name);
intent.putExtra("lat", item.lat);
intent.putExtra("lng", item.lng);
intent.putExtra("type", intent_type_string);
startActivity(intent);
}
});
container.addView(rootView);
return rootView;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view.equals(object);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
@Override
public int getCount() {
return items.size();
}
}
public类CustomPagerAdapter扩展了PagerAdapter{
私有ArrayList项;
private LinearLayout rootView;
专用网络图像查看相册;
左视图;
隐私权;
私人int imagePos;
私有字符串[]img;
私有网络视图;
私人影像一;
私有图像视图i2;
私有网络视图fbLikeBtn;
私有网络视图sinaLikeBtn;
私有字符串类型;
私有文本视图报告;
私有文本视图id;
私有文本视图名称;
私人TextView age_品牌;
私有文本视图性别模型;
私有文本视图功能;
私人文本视图评论;
私有文本视图位置;
私有文本查看日期;
私人短信浏览奖励;
私有图像查看查找;
私人图像查看电子邮件;
私人图像查看呼叫;
私有图像视图共享;
私人影像视图gps;
私人影像查看播放记录;
私人物品;
私有字符串已完成;
私人线路布置图;
私人下载经理;
私人游戏;
私人媒体播放器myPlayer;
专用广播接收机未完成;
专用字符串意图\类型\字符串;
私有字符串类型;
私有字符串意图\u msg;
公共CustomPagerAdapter(阵列列表项){
这个项目=项目;
}
@凌驾
公共对象实例化项(视图组容器,最终int位置){
rootView=(LinearLayout)LayoutFlater.from(ctx).充气(R.layout.item_细节,空);
item=(item)items.get(position);
album=(NetworkImageView)rootView.findViewById(R.id.img);
左=(ImageView)rootView.findViewById(R.id.left);
right=(ImageView)rootView.findviewbyd(R.id.right);
share=(ImageView)rootView.findviewbyd(R.id.share);
find=(ImageView)rootView.findviewbyd(R.id.find);
email=(ImageView)rootView.findviewbyd(R.id.email);
call=(ImageView)rootView.findviewbyd(R.id.call);
gps=(ImageView)rootView.findviewbyd(R.id.gps);
report=(TextView)rootView.findViewById(R.id.report);
id=(TextView)rootView.findViewById(R.id.id);
name=(TextView)rootView.findViewById(R.id.name);
age_brand=(TextView)rootView.findViewById(R.id.age_brand);
gender_model=(TextView)rootView.findviewbyd(R.id.gender_model);
feature=(TextView)rootView.findViewById(R.id.feature);
备注=(TextView)rootView.findViewById(R.id.备注);
location=(TextView)rootView.findViewById(R.id.location);
date=(TextView)rootView.findViewById(R.id.date);
奖励=(TextView)rootView.findViewById(R.id.raward);
play_record=(ImageView)rootView.findviewbyd(R.id.play_record);
奖励布局=(LinearLayout)rootView.findviewbyd(R.id.raward\u布局);
name.setText(getResources().getString(R.string.name)+item.name);
imagePos=0;
if(item.image_url!=null){
img=新字符串[item.image_url.length];
对于(int i=0;i