繁体   English   中英

为什么适配器总是改变图像位置?

[英]Why adapter always change images position?

我在 GridView 中有 6 个 ImageView,我需要设置从可绘制数组到图像视图的图像,我正在使用 BaseAdapter,然后第一次滚动一切正常。 这是图像视图实现,

     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);

这是设置图像的代码片段

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);
         }

所有 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;
     }

 }

滚动前在此处输入图片说明

滚动后在此处输入图片说明

请将您的位置值设为最终值

 @Override
     public View getView(final int position
................
.....

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM