Android 有没有办法为gridview上的每个项目分配id?
有没有办法为gridview上的每个项目分配id?我正在使用gridview,并按如下方式填充它:Android 有没有办法为gridview上的每个项目分配id?,android,Android,有没有办法为gridview上的每个项目分配id?我正在使用gridview,并按如下方式填充它: public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater inflator=LayoutInflater.from(this.mContext); View layout=inflator.inflate(R.layout.activity_main
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflator=LayoutInflater.from(this.mContext);
View layout=inflator.inflate(R.layout.activity_main, parent, false);
ImageView imageView;
if (convertView == null) {
// if it's not recycled, initialize some attributes
imageView = new ImageView(mContext);
imageView.setLayoutParams(new ViewGroup.LayoutParams(170, 170));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(4, 4, 4, 4);
} else {
imageView = (ImageView) convertView;
}
return imageView;
}
// references to our images
private Integer[] mThumbIds = {
R.drawable.container_circle_blue,
R.drawable.container_circle_dblue,
R.drawable.container_circle_green,
R.drawable.container_circle_yellow,
R.drawable.container_circle_red,
R.drawable.container_square_blue,
R.drawable.container_square_dblue,
R.drawable.container_square_green,
R.drawable.container_square_yellow,
R.drawable.container_square_red,
R.drawable.container_hexagone_blue,
R.drawable.container_hexagone_dblue,
R.drawable.container_hexagone_green,
R.drawable.container_hexagone_yellow,
R.drawable.container_hexagone_red,
R.drawable.container_star_blue,
R.drawable.container_star_dblue,
R.drawable.container_star_green,
R.drawable.container_star_yellow,
R.drawable.container_star_red,
R.drawable.container_triangle_blue,
R.drawable.container_triangle_dblue,
R.drawable.container_triangle_green,
R.drawable.container_triangle_yellow,
R.drawable.container_triangle_red,
};
我需要为每个项目添加一个Id,以便以后处理碰撞并与那里的每个图像视图和其他图像视图进行比较。位置有效地充当Id。或者我没有抓住要点?您应该设置
标记,而不是为动态创建的视图分配Id
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflator=LayoutInflater.from(this.mContext);
View layout=inflator.inflate(R.layout.activity_main, parent, false);
ImageView imageView;
if (convertView == null) {
// if it's not recycled, initialize some attributes
imageView = new ImageView(mContext);
imageView.setLayoutParams(new ViewGroup.LayoutParams(170, 170));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(4, 4, 4, 4);
} else {
imageView = (ImageView) convertView;
}
// set tag
imageView.setTag(position);
return imageView;
}
稍后在onClick
或onimclick
中获取视图时,可以执行以下操作-
public void onClick(View view) {
Object tag = view.getTag();
if (tag instanceOf Integer) {
int pos = (Integer)tag;
// use position to identify that item.
}
}
由于您是新手,如果使用Listview
,我建议您使用RecyclerView
。如果仍然需要使用普通适配器,则使用ViewHolder
模式。我的想法是这样的:id=“circle\u blue\u container”和其他图像将具有相同的id,如果它们相等,则imageresource将更改,我正考虑这样做,因为每次应用程序打开时,gridview中元素的顺序发生了变化您还在寻找答案吗?或者你忘了接受投票结果?对不起,我忘了把它标记为正确答案