[英]Why adapter always change images position?
i have 6 ImageView's in GridView and i need to set images what gets from array of drawables to image views, i'm using BaseAdapter, before first scrolling all good.我在 GridView 中有 6 个 ImageView,我需要设置从可绘制数组到图像视图的图像,我正在使用 BaseAdapter,然后第一次滚动一切正常。 Here is image view implementing,这是图像视图实现,
ArrayList<ImageView> images;
images = new ArrayList<>();
holder.ph1 = (ImageView) convertView.findViewById(R.id.ph1);
images.add(holder.ph1);
holder.ph2 = (ImageView) convertView.findViewById(R.id.ph2);
images.add(holder.ph2);
holder.ph3 = (ImageView) convertView.findViewById(R.id.ph3);
images.add(holder.ph3);
holder.ph4 = (ImageView) convertView.findViewById(R.id.ph4);
images.add(holder.ph4);
holder.ph5 = (ImageView) convertView.findViewById(R.id.ph5);
images.add(holder.ph5);
holder.ph6 = (ImageView) convertView.findViewById(R.id.ph6);
images.add(holder.ph6);
Here is set images fragment of code这是设置图像的代码片段
List<String> items = Arrays.asList(Helicopters.data.get(position).get("images").toString().split("\\s*,\\s*"));
Collections.sort(items);
for(int i = 0; i < items.size(); i++)
{
resID1 = MainActivity.act.getResources().getIdentifier("dop_" + (Integer.parseInt(items.get(i))), "drawable", MainActivity.act.getPackageName());
images.get(Integer.parseInt(items.get(i))-1).setImageResource(resID1);
}
All BaseAdapter code and screenshot of images, trouble goes on when im scrolling, all images change position ...所有 BaseAdapter 代码和图像截图,滚动时出现问题,所有图像改变位置......
public class HeliAdapter extends BaseAdapter {
Context mContext;
int resID,resID1;
ArrayList<ImageView> images;
static class HistoryHolder
{
TextView name;
TextView art;
ImageView ph1,ph2,ph3,ph4,ph5,ph6;
SketchImageView photo;
}
public HeliAdapter(Context context) {
mContext = context;
}
@Override
public int getCount() {
return Helicopters.data.size();
}
@Override
public Object getItem(int position) {
return Helicopters.data.size();
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final HistoryHolder holder;
if (convertView == null) {
convertView = LayoutInflater.from(mContext)
.inflate(R.layout.toy_item, null);
holder = new HistoryHolder();
holder.name = (TextView) convertView.findViewById(R.id.name);
holder.art = (TextView) convertView.findViewById(R.id.art);
holder.photo = (SketchImageView) convertView.findViewById(R.id.photo);
ArrayList<ImageView> images;
images = new ArrayList<>();
holder.ph1 = (ImageView) convertView.findViewById(R.id.ph1);
images.add(holder.ph1);
holder.ph2 = (ImageView) convertView.findViewById(R.id.ph2);
images.add(holder.ph2);
holder.ph3 = (ImageView) convertView.findViewById(R.id.ph3);
images.add(holder.ph3);
holder.ph4 = (ImageView) convertView.findViewById(R.id.ph4);
images.add(holder.ph4);
holder.ph5 = (ImageView) convertView.findViewById(R.id.ph5);
images.add(holder.ph5);
holder.ph6 = (ImageView) convertView.findViewById(R.id.ph6);
images.add(holder.ph6);
convertView.setTag(holder);
} else {
holder = (HistoryHolder) convertView.getTag();
}
String mDrawableName = "a_" + Helicopters.number(Helicopters.data.get(position).get("#").toString()) + "_1";
resID = MainActivity.act.getResources().getIdentifier(mDrawableName, "drawable", MainActivity.act.getPackageName());
holder.photo.displayResourceImage(MainActivity.act.getResources().getIdentifier("a_"+Helicopters.data.get(position).get("#").toString()+"_1" , "drawable", MainActivity.act.getPackageName()));
List<String> items = Arrays.asList(Helicopters.data.get(position).get("Иконки").toString().split("\\s*,\\s*"));
Collections.sort(items);
// Log.e("Cars", items.toString());
for(int i = 0; i < items.size(); i++)
{
// Log.e("orig", (Integer.parseInt(items.get(i)))+"");
// Log.e("parse", (Integer.parseInt(items.get(i))-1)+"");
// // Log.e("original", (Integer.parseInt(items.get(i))-1)+"");
resID1 = MainActivity.act.getResources().getIdentifier("dop_" + (Integer.parseInt(items.get(i))), "drawable", MainActivity.act.getPackageName());
images.get(Integer.parseInt(items.get(i))-1).setImageResource(resID1);
}
holder.name.setText(Helicopters.data.get(position).get("Название").toString());
holder.art.setText("Арт. " + Helicopters.data.get(position).get("#").toString());
return convertView;
}
}
Please make your position value to final请将您的位置值设为最终值
@Override
public View getView(final int position
................
.....
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.