我有一个包含每个项目图片的列表,当我点击图片时,我需要列表的位置。
我怎么能得到这个?
我试图做View.getTag().ToString()
但是错误。
以下是代码:
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);
}
}
});
答案 0 :(得分:1)
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();
}
});
答案 1 :(得分:1)
在每个getView上,将ImageView的标记设置为等于列表项的位置。
然后在您的侦听器中,您可以获取标记,并确定此图像所属的列表项。
ImageView im = (ImageView) convertView.findViewById(R.id.imageViewDSD);
im.setTag(position);
另请注意,每次调用getView时都不应创建新的侦听器,而只在convertView
为空时才执行此操作。但是,无论convertView的值如何,都应始终设置标记。
修改强>
这是一个整洁的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;
}