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;
}
}
給我兩分鐘 –
沒有變化:C –