Java 如何在ListView Android中获取位置imageView
我有一个每个项目的图片列表,当我点击图片时,我需要列表的位置 我怎么能得到这个 我试图执行Java 如何在ListView Android中获取位置imageView,java,android,listview,listener,Java,Android,Listview,Listener,我有一个每个项目的图片列表,当我点击图片时,我需要列表的位置 我怎么能得到这个 我试图执行View.getTag().ToString(),但操作错误 代码如下: ImageView im = (ImageView) convertView.findViewById(R.id.imageViewDSD); im.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) {
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);
}
}
});
listView.setOnItemClickListener(新的OnItemClickListener()
{
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id)
{
在你的图像上张贴
Toast.makeText(getApplicationContext(),“”+位置,Toast.LENGTH_LONG.show();
}
});
在每个getView上,将ImageView的标记设置为与列表项的位置相等
然后在侦听器中,您可以获取标记,并确定此图像属于哪个列表项
ImageView im = (ImageView) convertView.findViewById(R.id.imageViewDSD);
im.setTag(position);
还请注意,您不应该每次调用getView时都创建一个新的侦听器,而应该仅在convertView
为null时才创建。但是,无论convertView的值如何,都应始终设置标记
编辑:
下面是一个完整的neat getView方法示例(使用holder模式避免findViewById
):
CustomAdapter的
getView()
方法已经具有int position
参数。将其设置为最终版,并在ImageView的onClick()中使用你明白我的意思了吗?不适用。OP需要在ImageView中单击,这是列表行的单个视图。未完成ListRow的单击。我不明白您需要什么我们可以在listview上使用onitemclick listner来获取Pisition和image view我们不能在onitemclick上应用,因为只有当ImageView的onClick()
方法超出适配器的getView()
方法时,才需要包含单个项getTag()
和setTag()
。或者您不希望将int position
参数设置为final
。否则,您可以直接在ImageView的onclick()
中使用int-position参数,将其声明为final
@user370305,为每次调用getView创建一个新的侦听器,这在我看来是相当愚蠢的。是的,但它选择了OP。通过上面的代码,我们不能说任何关于创建新侦听器的事情,因为我们需要完整的代码。
ImageView im = (ImageView) convertView.findViewById(R.id.imageViewDSD);
im.setTag(position);
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;
}