如何在ListView Android中获取位置imageView

时间:2014-09-03 13:24:21

标签: 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) {
        try {
            Toast.makeText(contextCustom,
                    "ImageView clicked for the row = " + v.getTag(),
                    Toast.LENGTH_SHORT).show();
        } catch (Exception e) {
            Log.i("Error", "errore vista " + e);
        }

    }

});

2 个答案:

答案 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;
}