android– 当我点击特定视图时,如何在列表视图中获取项目的位置?

android– 当我点击特定视图时,如何在列表视图中获取项目的位置?,第1张

概述正如标题所示,当我点击项目内的视图时,我想知道项目的确切位置.假设我在ArrayAdapter的getView()方法中有以下代码:...holder=newViewHolder();holder.iconAction=(ImageView)convertView.findViewById(R.id.download_item_iconAction);holder.iconAction.setOnClickLi

正如标题所示,当我点击项目内的视图时,我想知道项目的确切位置.

假设我在ArrayAdapter的getVIEw()方法中有以下代码:

...holder = new VIEwHolder ();holder.iconAction = (ImageVIEw)convertVIEw.findVIEwByID (R.ID.download_item_iconAction);holder.iconAction.setonClickListener (new VIEw.OnClickListener(){    @OverrIDe    public voID onClick (VIEw v){        //Item X is clicked    }});...

在onClick()中,我知道点击的视图,v,但我不知道项目的位置.
我们来做个伎俩.当getVIEw()创建视图时,我将在VIEwHolder中保存位置:

public VIEw getVIEw (int position, VIEw convertVIEw, VIEwGroup parent){    VIEwHolder holder;    if (convertVIEw == null){        holder = new VIEwHolder ();        holder.iconAction = (ImageVIEw)convertVIEw.findVIEwByID (ID);        holder.iconAction.setonClickListener (new VIEw.OnClickListener(){            @OverrIDe            public voID onClick (VIEw v){                int pos = (Integer)v.getTag ();            }        });        holder.iconWait.setTag (position);        ...    }else{        holder = (VIEwHolder)convertVIEw.getTag ();    }    ...}

此代码有效……但并非总是如此.如果必须滚动列表以查看视图被回收的所有项目.假设列表有10个元素,只有5个可见(可见意味着:如果我们看到一个项目的1个像素行,则此项目可见).现在,如果我们向下滚动,我们将看到第六个元素,但第一个(0)仍然可见.我们滚动一点,第一个元素将被隐藏,我们将看到第七个元素出现,但是这个新元素的视图是第一个元素(0)的视图.所以我保存位置:0,1,2,3,4和5.第七个元素(6)将保存位置0:错误.
获取单击回调的另一种方法是使用ListVIEw的OnItemClickListener侦听器:

ListVIEw = getListVIEw ();ListVIEw.setonItemClickListener (new AdapterVIEw.OnItemClickListener(){    @OverrIDe    public voID onItemClick (AdapterVIEw<?> parentVIEw, VIEw childVIEw, int position, long ID){        ...    }});

如果我向下滚动,我会得到确切的位置,但是通过这种方式,我会在单击项目时收到回调,无论点击的子视图如何.
谢谢.

解决方法:

你几乎就在那里,你需要做的就是在if / else子句之后设置标签.这是为了确保在回收视图时以及从new创建视图时更新标记.

例如

    if (convertVIEw == null){        holder = new VIEwHolder ();        ...    }else{        holder = (VIEwHolder)convertVIEw.getTag ();    } holder.iconWait.setTag (position);
总结

以上是内存溢出为你收集整理的android – 当我点击特定视图时,如何在列表视图中获取项目的位置?全部内容,希望文章能够帮你解决android – 当我点击特定视图时,如何在列表视图中获取项目的位置?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1115887.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存