我在网格视图中移动图像时遇到问题。我是一个npuzzle滑块,只能滑动空白图像。主要问题是我在gridviewadapter中的imageview上设置了标签。但是,如果我将图像混洗,这些标签将保持不变,但应该随图像而变化。例如,
假设我得到了bitmaps的bitmaparraylist:{bm0,bm1,bm2,bm3,bm4,bm5,bm6,bm7,bm8},我设置标签{0,1,2,3,4,5,6, 7,8}在我的图像适配器中。如果我改变这个位图,我该如何用它们来移动图像标记呢?
以下是我的imageAdapter的代码:
private ArrayList<Bitmap> crops;
private List ID;
private Context mContext;
public ImageAdapter(Context c, ArrayList<Bitmap> crops, List ID) {
mContext = c;
this.crops = crops;
this.ID = ID;
}
public int getCount() {
return crops.size();
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) { // if it's not recycled, initialize some attributes
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageBitmap(crops.get(position));
imageView.setTag(position);
return imageView;
}
}
正如您所看到的,标签将始终相同,但这会导致问题。 :(
任何有关解决此问题的提示或技巧?
PS:我创建了一个列表ID,但没有做任何事情,因为我不知道该怎么做
基斯
答案 0 :(得分:0)
您可以随机播放列表或任何其他此类
的集合long seed = System.nanoTime();
Collections.shuffle(bitmaparraylist , new Random(seed));
此调用适配器的notifydatasetchanged方法之后。您无需设置ImageView标记。
答案 1 :(得分:0)
当我将collections.shuffle()放入GridView中的图像时? imageIDs是否为shuffle()提供参考,必须首先传递给arrayList?我知道随机更复杂所以我更喜欢使用collections.shuffle()。
// Inside a controller
class MyController {
public function myAction() {
if (!$this->get('security.authorization_checker')->isGranted('IS_AUTHENTICATED_FULLY')) {
throw $this->createAccessDeniedException();
}
}
}
答案 2 :(得分:0)
在适配器中添加方法
public void shuffle() {
Collections.shuffle(crops, new Random(System.currentTimeMillis()));
}
并致电
imageAdapter.shuffle();
imageAdapter.notifyDataSetChanged();