[英]How to get position imageView in ListView Android
I have a list with pictures for each item, when I click on an image I need the position of the list. 我有一个包含每个项目图片的列表,当我单击图像时,我需要列表的位置。
how can I get this? 我怎么能得到这个?
I tried to do View.getTag().ToString()
but by mistake. 我尝试做
View.getTag().ToString()
但是错误。
Here's the code: 这是代码:
ImageView im = (ImageView) convertView.findViewById(R.id.imageViewDSD);
im.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
try {
Toast.makeText(contextCustom,
"ImageView clicked for the row = " + v.getTag(),
Toast.LENGTH_SHORT).show();
} catch (Exception e) {
Log.i("Error", "errore vista " + e);
}
}
});
listView.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view,int position, long id)
{
postion on your image
Toast.makeText(getApplicationContext(), ""+position, Toast.LENGTH_LONG).show();
}
});
On each getView, set the ImageView's tag to be equal to the list item's position. 在每个getView上,将ImageView的标记设置为等于列表项的位置。
Then in your listener you can get the tag, and determine which list item this image belongs to. 然后,在您的侦听器中,您可以获取标签,并确定该图像属于哪个列表项。
ImageView im = (ImageView) convertView.findViewById(R.id.imageViewDSD);
im.setTag(position);
Also note that you shouldn't create a new listener every time getView is called, instead do it only when convertView
is null. 还要注意,您不应在每次调用getView时创建一个新的侦听器,而应仅在
convertView
为null时创建一个新的侦听器。 However the tag should always be set regardless of convertView's value. 但是,无论convertView的值如何,都应始终设置标记。
Edit: 编辑:
Here's a full example of neat getView method (using a holder pattern to avoid findViewById
): 这是一个完整的getView方法的完整示例(使用持有人模式来避免
findViewById
):
private static class ViewHolder {
ImageView imgView;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// (Re)Use the convertView
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.list_item, parent, false);
holder = new ViewHolder();
holder.imgView = (ImageView) convertView.findViewById(R.id.imageViewDSD);
holder.imgView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(contextCustom, "Pos: " + v.getTag(),
Toast.LENGTH_SHORT).show();
}
});
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.imgView.setTag(position);
// Do something else with your image here
return convertView;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.