问题,图片预览时选取照片,返回界面恢复时出现错乱。主要是界面往上滑的时候遮盖了部分内容,返回的时候恢复就错乱了,直接到了下一行。
@Override
protected void onResume() {
super.onResume();
btn_complete.setText("完成(" + MyURL_Flag.imgList.size() + "/" + size + ")");
try {
List<String> list = album.getPhotos();
int a = imgGridView.getFirstVisiblePosition();
int b = imgGridView.getLastVisiblePosition();
LogUtil.log(refNO, "開始位置" + a + "\t結束位置:" + b);
for (int i = a; i <= b; i++) {
View child = imgGridView.getChildAt(i);
ImageButton box = (ImageButton) child.findViewById(R.id.checkBox1);
if (MyURL_Flag.imgList.contains(list.get(i))) {
box.setSelected(true);
} else {
box.setSelected(false);
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
这段代码是在onresume中恢复界面的一段,之前用了checkbox,后面改了imagebutton,解决原理是一样的。
解决的方法就是adapter中settag,tag决定了view的类型的位置,使用findviewwithtag方法就不会错乱了。
解决代码:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
Holder holder;
if (position != index && position > index) {
index=position;
convertView=LayoutInflater.from(context).inflate(R.layout.imgsitem, null);
holder=new Holder();
holder.imageView=(ImageView) convertView.findViewById(R.id.imageView1);
holder.checkBox=(ImageButton) convertView.findViewById(R.id.checkBox1);
holder.imgId = (TextView) convertView.findViewById(R.id.tv_id);
convertView.setTag(holder);
holderlist.add(convertView);
}else {
holder= (Holder)holderlist.get(position).getTag();
convertView=holderlist.get(position);
}
holder.imageView.setTag("img" + position);
holder.checkBox.setTag("box" + position);
holder.checkBox.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
clickedListener.onViewClicked(v, position);
}
});
return convertView;
}
@Override
protected void onResume() {
super.onResume();
btn_complete.setText("完成(" + MyURL_Flag.imgList.size() + "/" + size + ")");
try {
List<String> list = album.getPhotos();
int a = imgGridView.getFirstVisiblePosition();
int b = imgGridView.getLastVisiblePosition();
for (int i = a; i <= b; i++) {
ImageButton box = (ImageButton) imgGridView.findViewWithTag("box" + i);
if (MyURL_Flag.imgList.contains(list.get(i))) {
box.setSelected(true);
} else {
box.setSelected(false);
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}