我正在尝试使用gridView创建一个Android应用程序。在这个应用程序中,我试图随机添加图像到GridView。我有5张图片,这些图像像R.drawable.c0,R.drawable.c1一样被添加到drawable中, R.drawable.c2,R.drawable.c3, R.drawable.c4。
当我们点击每个网格时,每个网格中的图像将随机变化。我的编码工作正常,可以在每次网格点击中随机更改图像。但是我需要帮助来获取图像名称。
public class MainActivity extends Activity {
GridView gridview;
ImageView imageView ;
public static Integer[] mThumbIds = {
R.drawable.c0, R.drawable.c1,
R.drawable.c2, R.drawable.c3,
R.drawable.c4,
R.drawable.c0, R.drawable.c1,
R.drawable.c2, R.drawable.c3,
R.drawable.c4,
R.drawable.c0, R.drawable.c1,
R.drawable.c2, R.drawable.c3,
R.drawable.c4,
R.drawable.c0, R.drawable.c1,
R.drawable.c2, R.drawable.c3,
R.drawable.c4,
R.drawable.c0, R.drawable.c1,
R.drawable.c2, R.drawable.c3,
R.drawable.c4,
R.drawable.c0, R.drawable.c1,
R.drawable.c2, R.drawable.c3,
R.drawable.c4,
R.drawable.c0, R.drawable.c1,
R.drawable.c2, R.drawable.c3,
R.drawable.c4,
R.drawable.c0, R.drawable.c1,
R.drawable.c2, R.drawable.c3,
R.drawable.c4,
R.drawable.c0, R.drawable.c1,
R.drawable.c2, R.drawable.c3,
R.drawable.c4,
R.drawable.c0, R.drawable.c1,
R.drawable.c2, R.drawable.c3,
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gridview = (GridView) findViewById(R.id.gridview);
gridview.setAdapter(new ImageAdapter(this));
gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
//gridview.getId();
imageView = (ImageView) v;
Random r=new Random();
int i=r.nextInt(16);
Log.e("i",""+i);
imageView.setImageResource(mThumbIds[i]);
ImageAdapter im = (ImageAdapter)parent.getAdapter();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
public class ImageAdapter extends BaseAdapter {
private Context mContext;
// private GridItem[] items;
public ImageAdapter(Context c) {
mContext = c;
}
public int getCount() {
return mThumbIds.length;
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
// create a new ImageView for each item referenced by the Adapter
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(40,40 ));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(3, 3, 3, 3);
} else {
imageView = (ImageView) convertView;
}
Random r=new Random();
int i=r.nextInt(5);
imageView.setImageResource(mThumbIds[i]);
return imageView;
}
}
}
答案 0 :(得分:1)
使用View类的set / getTag方法。您可以将任何对象附加到视图并稍后检索它。
imageView.setImageResource(mThumbIds[i]);
imageView.setTag(mThumbIds[i]);
后
Integer thumbId = (Integer)imageView.getTag();
答案 1 :(得分:0)
在基座适配器内使用支架并更改getview()
并使用xml作为您的手机
public class ViewHolder {
ImageView img;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if(convertView==null){
holder=new ViewHolder();
LayoutInflater li = getLayoutInflater();
convertView = li.inflate(R.layout.list_item, null);
holder.img = (ImageView)convertView.findViewById(R.id.imgView);
convertView.setTag(holder);
}
else
{
holder = (ViewHolder)convertView.getTag();
}
Random r=new Random();
int i=r.nextInt(5);
holder.img.setImageResource(mThumbIds[i]);//edited
return convertView;
}
ViewHolder
允许您处理回收。
并且XML
用于您的细胞将在运行时为您提供更大的灵活性,减少并发症和计算。