简体   繁体   English

如何在ListView Android中获取位置imageView

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM