2016-09-14 109 views
1

我有6個ImageView的GridView中,我需要設置圖像從drawables數組獲取圖像視圖,我使用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代碼和圖像的截圖,麻煩的推移,當IM滾動,所有的圖像變更集圖像的片段 ...

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

} 

之前滾動 enter image description here

滾動 enter image description here

回答

1

後請讓你的位置值,以便最終

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

給我兩分鐘 –

+0

沒有變化:C –