安卓 ListView设置某一项不可以点击
展开全部
背景变暗是发生在子View(你所说的不可点击那项)的onTouchEvent()函数的ACTION_DOWN事件分支里面(就是点下去那下)。ListView是一个ViewGroup,点击某一项时,ACTION_DOWN事件的传递顺序是:①ListView的dispatchTouchEvent() =>②ListView的OnTouchListener => ③某一项View的dispatchTouchEvent() => ④某一项的OnTouchListener => ⑤某一项View的onTouchEvent => ⑥ListView的onTouchEvent()。背景变暗就是发生在⑤中,只要在此之前的几个函数拦截到就行了。如果你知道怎么重载函数那现在肯定明白了。
不懂的话你就给不可点击的那个按钮上设一个setOnTouchListener(注意不是setOnClickListener()),在这个listener中返回true(默认是false),这就是在④那一步拦截了。OnClickListener监听到的是从手指按下到抬起来整个过程,背景在按下去那下就设置了,所以不行。 楼上那个朋友说的重载载Adapter的isEnable()函数让它判断如果是不可点击那项则返回false也行。
不懂的话你就给不可点击的那个按钮上设一个setOnTouchListener(注意不是setOnClickListener()),在这个listener中返回true(默认是false),这就是在④那一步拦截了。OnClickListener监听到的是从手指按下到抬起来整个过程,背景在按下去那下就设置了,所以不行。 楼上那个朋友说的重载载Adapter的isEnable()函数让它判断如果是不可点击那项则返回false也行。
展开全部
在BaseAdapter重写boolean isEnabled(int position)。根据不同位置返回不同值。亲测有效
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你在onItemClickListener里面判断,如果position等于你不想有点击事件的那一项,就直接return不响应点击事件即可
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Adapter用的是继承BaseAdapter的方式吗?
更多追问追答
追问
是的
追答
那在getView中不是有一个convertView吗,它就是ListView的每一个条目的view,如果你想让某一项不可点击,那根据你的条件(比如:position == 5之类的)判断一下,如果满足就设置convertView.setClickeable(false);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询