Android 获取适配器类中ImageView onClick侦听器的位置

Android 获取适配器类中ImageView onClick侦听器的位置,android,adapter,Android,Adapter,我想获得imageView onclick的位置,但我不知道如何实现它。 代码: 公共类InteractiveArrayaAdapter扩展 阵列适配器{ 公共布尔[]checkBoxState; 布尔[]favStar; 持票人持票人; //私人物品充气机; 私人充气机; 私有ArrayList菜单项; 公共InteractiveArrayAdapter(上下文、int资源、, ArrayList菜单项){ 超级(上下文、资源、菜单项); this.menuItems=menuItems; 充

我想获得imageView onclick的位置,但我不知道如何实现它。 代码:

公共类InteractiveArrayaAdapter扩展
阵列适配器{
公共布尔[]checkBoxState;
布尔[]favStar;
持票人持票人;
//私人物品充气机;
私人充气机;
私有ArrayList菜单项;
公共InteractiveArrayAdapter(上下文、int资源、,
ArrayList菜单项){
超级(上下文、资源、菜单项);
this.menuItems=menuItems;
充气器=(充气器)上下文
.getSystemService(上下文布局\充气机\服务);
checkBoxState=new boolean[menuItems.size()];
}
私有类视窗持有者{
//ImageView照片;
文本视图标题、链接、已发布、说明;
//图像按钮新闻检查;
公共图像查看新闻检查;
}
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
if(convertView==null){
//充气机=
//LayoutInflater.getSystemService(Context.LAYOUT\u flater\u服务);
convertView=充气机。充气(R.layout.list_item1,空);
viewholder=新的viewholder();
//缓存视图
//viewholder.photo=(ImageView)
//convertView.findViewById(R.id.photo);
viewholder.title=(TextView)convertView
.findviewbyd(R.id.news_title);
//viewholder.link=(TextView)convertView.findViewById(R.id.link);
viewholder.published=(TextView)convertView
.findviewbyd(R.id.published);
viewholder.description=(TextView)convertView
.findViewById(R.id.说明);
viewholder.newsCheck=(ImageView)convertView
.findviewbyd(R.id.newsCheck);
系统输出打印项次(“位置”+位置);
//将缓存的视图链接到convertview
convertView.setTag(viewholder);
}否则
viewholder=(viewholder)convertView.getTag();
HashMap catalog_list=新建HashMap();
catalog\u list=menuItems.get(位置);
//viewholder.link.setText(catalog\u list.get(“NEWS\u KEY\u link”)
//
//viewholder.link.setText(目录列表
//.get(NewsXMLParsingActivity.NEWS_KEY_LINK));
viewholder.title.setText(目录列表
.get(NewsXMLParsingActivity.NEWS_KEY_TITLE));
viewholder.published.setText(目录列表
.get(NewsXMLParsingActivity.NEWS_KEY_PUB));
viewholder.description.setText(目录列表
.get(NewsXMLParsingActivity.NEWS_KEY_DESCRIPTION));
viewholder.newsCheck.setTag(位置);
viewholder.newsCheck.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
viewholder.newsCheck.getTag(位置);
System.out.println(viewholder.newsCheck.getTag(position));
}
});
返回视图;
}
}

您可以使用
标签
来获取您想要的一切

您需要编写以下代码:

viewholder.newsCheck.setTag(position);
然后您可以使用
getTag()
方法获取您的值

更新

您需要在onClick方法上使用v.getTag()来获取位置

那么您的代码应该如下所示:

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {

        if (convertView == null) {
            // inflater =
            // LayoutInflater.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.list_item1, null);
            viewholder = new ViewHolder();

            // cache the views
            // viewholder.photo=(ImageView)
            // convertView.findViewById(R.id.photo);
            viewholder.title = (TextView) convertView
                    .findViewById(R.id.news_title);
            // viewholder.link = (TextView) convertView.findViewById(R.id.link);
            viewholder.published = (TextView) convertView
                    .findViewById(R.id.published);
            viewholder.description = (TextView) convertView
                    .findViewById(R.id.description);
            viewholder.newsCheck = (ImageView) convertView
                    .findViewById(R.id.newsCheck);

            viewholder.newsCheck.setTag(position);  // add this line

            System.out.println("position" + position);

            // link the cached views to the convertview
            convertView.setTag(viewholder);

        } else
            viewholder = (ViewHolder) convertView.getTag();

        HashMap<String, String> catalog_list = new HashMap<String, String>();
        catalog_list = menuItems.get(position);

        // viewholder.link.setText(catalog_list.get("NEWS_KEY_LINK")
        //
        // viewholder.link.setText(catalog_list
        // .get(NewsXMLParsingActivity.NEWS_KEY_LINK));
        viewholder.title.setText(catalog_list
                .get(NewsXMLParsingActivity.NEWS_KEY_TITLE));
        viewholder.published.setText(catalog_list
                .get(NewsXMLParsingActivity.NEWS_KEY_PUB));
        viewholder.description.setText(catalog_list
                .get(NewsXMLParsingActivity.NEWS_KEY_DESCRIPTION));

        viewholder.newsCheck.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
               Log.d("position is" , ""+v.getTag());  // get position of your view

            }
        });

        return convertView;

    }
@覆盖
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
if(convertView==null){
//充气机=
//LayoutInflater.getSystemService(Context.LAYOUT\u flater\u服务);
convertView=充气机。充气(R.layout.list_item1,空);
viewholder=新的viewholder();
//缓存视图
//viewholder.photo=(ImageView)
//convertView.findViewById(R.id.photo);
viewholder.title=(TextView)convertView
.findviewbyd(R.id.news_title);
//viewholder.link=(TextView)convertView.findViewById(R.id.link);
viewholder.published=(TextView)convertView
.findviewbyd(R.id.published);
viewholder.description=(TextView)convertView
.findViewById(R.id.说明);
viewholder.newsCheck=(ImageView)convertView
.findviewbyd(R.id.newsCheck);
viewholder.newsCheck.setTag(位置);//添加此行
系统输出打印项次(“位置”+位置);
//将缓存的视图链接到convertview
convertView.setTag(viewholder);
}否则
viewholder=(viewholder)convertView.getTag();
HashMap catalog_list=新建HashMap();
catalog\u list=menuItems.get(位置);
//viewholder.link.setText(catalog\u list.get(“NEWS\u KEY\u link”)
//
//viewholder.link.setText(目录列表
//.get(NewsXMLParsingActivity.NEWS_KEY_LINK));
viewholder.title.setText(目录列表
.get(NewsXMLParsingActivity.NEWS_KEY_TITLE));
viewholder.published.setText(目录列表
.get(NewsXMLParsingActivity.NEWS_KEY_PUB));
viewholder.description.setText(目录列表
.get(NewsXMLParsingActivity.NEWS_KEY_DESCRIPTION));
viewholder.newsCheck.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
Log.d(“position is”,“”+v.getTag());//获取视图的位置
}
});
返回视图;
}

您可以为ImageView设置标记,然后通过调用getTag()方法获取其位置。它给我空值:System.out.println(viewholder.newsCheck.getTag(position));您需要
v.getTag()
on
onClick
方法获取视图的位置参见我的编辑@poojagupta@Shyayanpourvatan现在我想在点击该图像时更改该图像我该怎么做?您到底想要什么?有多少图像
    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {

        if (convertView == null) {
            // inflater =
            // LayoutInflater.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.list_item1, null);
            viewholder = new ViewHolder();

            // cache the views
            // viewholder.photo=(ImageView)
            // convertView.findViewById(R.id.photo);
            viewholder.title = (TextView) convertView
                    .findViewById(R.id.news_title);
            // viewholder.link = (TextView) convertView.findViewById(R.id.link);
            viewholder.published = (TextView) convertView
                    .findViewById(R.id.published);
            viewholder.description = (TextView) convertView
                    .findViewById(R.id.description);
            viewholder.newsCheck = (ImageView) convertView
                    .findViewById(R.id.newsCheck);

            viewholder.newsCheck.setTag(position);  // add this line

            System.out.println("position" + position);

            // link the cached views to the convertview
            convertView.setTag(viewholder);

        } else
            viewholder = (ViewHolder) convertView.getTag();

        HashMap<String, String> catalog_list = new HashMap<String, String>();
        catalog_list = menuItems.get(position);

        // viewholder.link.setText(catalog_list.get("NEWS_KEY_LINK")
        //
        // viewholder.link.setText(catalog_list
        // .get(NewsXMLParsingActivity.NEWS_KEY_LINK));
        viewholder.title.setText(catalog_list
                .get(NewsXMLParsingActivity.NEWS_KEY_TITLE));
        viewholder.published.setText(catalog_list
                .get(NewsXMLParsingActivity.NEWS_KEY_PUB));
        viewholder.description.setText(catalog_list
                .get(NewsXMLParsingActivity.NEWS_KEY_DESCRIPTION));

        viewholder.newsCheck.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
               Log.d("position is" , ""+v.getTag());  // get position of your view

            }
        });

        return convertView;

    }