ListView Item 里多种点击事件的用法
思路:由于item里需要处理多种点击事件,所以不便于用listview的onItemClickListener, 需要在adapter里进行设置不同点击区域的onclicklistener
但是,有时候有些业务逻辑并不是在adapter里处理,所以需要在activity或者 fragment里提供给adapter一个接口,然后在adapter的点击事件里设置这个onclicklistener。
eg:
public interface ItemClickListener {
void onLeftClick(int position);
void onRightClick(int position);
void onItemClick(int position);
}
在activity 里创建一个ItemClickListener
ItemClickListener onItemClickListener = new ItemClickListener() {
@Override
public void onLeftClick(int position) {
}
@Override
public void onRightClick(int position) {
}
@Override
public void onItemClick(int position) {
}
};
在activity 里创建一个自定义的XXXAdapter,通过构造传入onItemClickListener,和数据源list,这样就可以在activity里处理item里的各种点击事件了。
mHistoryAdapter = new XXXAdapter(getApplicationContext(),list, onItemClickListener);
XXXAdapter 里的关键设置
holder.btn_cancel.setOnClickListener(new ItemListener(holder));
holder.btn_pay.setOnClickListener(new ItemListener(holder));
getView方法的返回对象view,设置view.setOnClickListener(new ItemListener(holder))处理整个item的点击事件
class ItemListener implements View.OnClickListener{
public ItemListener(ViewHolder holder) {
this.holder = holder;
}
ViewHolder holder;
@Override
public void onClick(View v) {
if(v.getId() == R.id.rl_arrow){
if(holder.isshowMore){
holder.isshowMore = false;
}else{
holder.isshowMore = true;
}
notifyDataSetChanged();
}else if(v.getId()==R.id.btn_cancel){
if(itemClickListener!=null){
itemClickListener.onLeftClick(holder.pos);
}
}else if(v.getId()==R.id.btn_pay){
if(itemClickListener!=null){
itemClickListener.onRightClick(holder.pos);
}
}else{
if(itemClickListener!=null){
itemClickListener.onItemClick(holder.pos);
}
}
}
}
ListView Item 里多种点击事件的用法的更多相关文章
- 在Activity中响应ListView内部按钮的点击事件
最近交流群里面有人问到一个问题:如何在Activity中响应ListView内部按钮的点击事件,不要在Adapter中响应? 对于这个问题,我最初给他的解答是,在Adapter中定义一个回调接口,在A ...
- 在Activity中响应ListView内部按钮的点击事件的两种方法!!!
在Activity中响应ListView内部按钮的点击事件的两种方法 转载:http://www.cnblogs.com/ivan-xu/p/4124967.html 最近交流群里面有人问到一个问题: ...
- 在Activity中响应ListView内部按钮的点击事件的两种方法
转载:http://www.cnblogs.com/ivan-xu/p/4124967.html 最近交流群里面有人问到一个问题:如何在Activity中响应ListView内部按钮的点击事件,不要在 ...
- Android Listview中Button按钮点击事件冲突解决办法
今天做项目时,ListView中含有了Button组件,心里一早就知道肯定会有冲突,因为以前就遇到过,并解决过,可惜当时没有记录下来. 今天在做的时候,继续被这个问题郁闷了一把,后来解决后,赶紧来记录 ...
- 给listview添加长时间点击事件(完成删除操作)
出现的问题是:当长时间点击listview的时候,触发长时间点击事件的同时也会触发点击事件,处理的办法是在长时间点击事件中加上return true:这样就可以很好的解决了. 给listview天机长 ...
- ListView中嵌套GridView点击事件
做一个项目时,需要在ListView中嵌套GridView,因为ListView的每个条目中不一定出现GridView,那么问题来了,添加GridView的Item的点击事件后,有GridView出现 ...
- 注意:MainActivity的oncreate方法里不要再inflate布局了(MainActivity里的点击事件无响应)
activity_main已经通过setContentView(R.layout.activity_main);设置给MainActivity, 不要再inflate出新布局,然后findviewby ...
- xamarin.android listview绑定数据及点击事件
前言 listview是用来显示数据列表的一个控件,今天给大家带来如何使用cursor进行数据绑定以及点击事件. 导读 1.如何创建一个listview 2.如何使用cursor进行绑定数据 3.li ...
- android listview item取消按点击效果
设置android:listSelector="#00000000" 即可
随机推荐
- linux-shell脚本命令之grep
版权声明: https://blog.csdn.net/zdp072/article/details/26015611 [ grep简单介绍: ] grep是用来过滤含有特定字符的行, 能使用正則表達 ...
- ES6中的class 与prototype
一.定义构造函数 在以前的js中,生成一个对象实例,需要先定义构造函数,然后通过prototype 的方式来添加方法,在生成实例: function Person(){ this.name = &qu ...
- hihocoder 微软编程之美2015 初赛 第二场(暴力+字典序+图论+思维算法)
题目1 : 扑克牌 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 一副不含王的扑克牌由52张牌组成,由红桃.黑桃.梅花.方块4组牌组成,每组13张不同的面值.现在给定52 ...
- 算法(Algorithms)第4版 练习 1.3.23 1.3.22
1.3.23 When it comes time to update t.next, x.next is no longer the original node following x, but i ...
- 算法(Algorithms)第4版 练习 1.3.29
代码实现: //1.3.29 package com.qiusongde.linkedlist; import java.util.Iterator; import java.util.NoSuchE ...
- consider increasing the maximum size of the cache.
虚拟机上搭建jenkins,出现unable to free [10] percent of the cache for Context [/jenkins] 提示让我加大缓存 consider in ...
- IDEAL葵花宝典:java代码开发规范插件:GsonFormat插件将JSONObject格式的String 解析成实体
前言: GsonFormat插件主要用于使用Gson库将JSONObject格式的String 解析成实体,该插件可以加快开发进度,使用非常方便,效率高. 这个教程主要是学习IntelliJ IDEA ...
- hihocoder1075【开锁魔法】
hihocoder1075[开锁魔法] 题意是给你一个 \(1-n\) 的置换,求选 \(k\) 个可以遍历所有点的概率. 题目可以换个模型:有 \(n\) 个球,有 \(cnt\) 种不同的颜色,求 ...
- blog集合
godiscoder的技术blog 一个不错的技术架构设计blog MySQLOPS 数据库与运维自动化技术分享 stone的技术blog 陈皓专栏 风雪涟漪的技术blog 华为首席科学家 张宴技术b ...
- X-Forward-For ip
用 Firefox 的Moify Headers 插件 服务器重新配置X-Forward-For 为正确的值. 如对典型的nginx + php fastcgi 环境( nginx 与 php fas ...