ListView Item 里多种点击事件的用法

时间:2022-12-21 19:19:37

思路:由于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 里多种点击事件的用法的更多相关文章

  1. 在Activity中响应ListView内部按钮的点击事件

    最近交流群里面有人问到一个问题:如何在Activity中响应ListView内部按钮的点击事件,不要在Adapter中响应? 对于这个问题,我最初给他的解答是,在Adapter中定义一个回调接口,在A ...

  2. 在Activity中响应ListView内部按钮的点击事件的两种方法!!!

    在Activity中响应ListView内部按钮的点击事件的两种方法 转载:http://www.cnblogs.com/ivan-xu/p/4124967.html 最近交流群里面有人问到一个问题: ...

  3. 在Activity中响应ListView内部按钮的点击事件的两种方法

    转载:http://www.cnblogs.com/ivan-xu/p/4124967.html 最近交流群里面有人问到一个问题:如何在Activity中响应ListView内部按钮的点击事件,不要在 ...

  4. Android Listview中Button按钮点击事件冲突解决办法

    今天做项目时,ListView中含有了Button组件,心里一早就知道肯定会有冲突,因为以前就遇到过,并解决过,可惜当时没有记录下来. 今天在做的时候,继续被这个问题郁闷了一把,后来解决后,赶紧来记录 ...

  5. 给listview添加长时间点击事件(完成删除操作)

    出现的问题是:当长时间点击listview的时候,触发长时间点击事件的同时也会触发点击事件,处理的办法是在长时间点击事件中加上return true:这样就可以很好的解决了. 给listview天机长 ...

  6. ListView中嵌套GridView点击事件

    做一个项目时,需要在ListView中嵌套GridView,因为ListView的每个条目中不一定出现GridView,那么问题来了,添加GridView的Item的点击事件后,有GridView出现 ...

  7. 注意:MainActivity的oncreate方法里不要再inflate布局了(MainActivity里的点击事件无响应)

    activity_main已经通过setContentView(R.layout.activity_main);设置给MainActivity, 不要再inflate出新布局,然后findviewby ...

  8. xamarin.android listview绑定数据及点击事件

    前言 listview是用来显示数据列表的一个控件,今天给大家带来如何使用cursor进行数据绑定以及点击事件. 导读 1.如何创建一个listview 2.如何使用cursor进行绑定数据 3.li ...

  9. android listview item取消按点击效果

    设置android:listSelector="#00000000" 即可

随机推荐

  1. IOS 从一个小地方想到……

    //(一个比较好的地方是 : cancel代表取消的意思,suspended,表示已经挂起,这些英文记住了用来命名挺好的,看看别人的过去时都是加ed的,就是这么强,所以语法不好的话,多关注ios的命名 ...

  2. 谢尔排序/缩减增量排序(C++)

    谢尔排序/缩减增量排序(C++) 谢尔排序/缩减增量排序: 他通过比较相距一定间隔的元素来工作,各趟比较所用的距离随着算法的进行而减小,直到只比较相邻元素的最后一趟排序为止.(好复杂) 看了一下实现代 ...

  3. ModelSim仿真入门

    ModelSim仿真入门之一:软件介绍 编写这个教程之前,为了让不同水平阶段的人都能阅读,我尽量做到了零基础入门这个目标,所有的操作步骤都经过缜密的思考,做到了详细再详细的程度. 如果您是FPGA开发 ...

  4. hadoop三个配置文件的参数含义说明core-site.xml,hdfs-site.xml,mapred-site.xml

    配置hadoop,主要是配置core-site.xml,hdfs-site.xml,mapred-site.xml三个配置文件,默认下来,这些配置文件都是空的,所以很难知道这些配置文件有哪些配置可以生 ...

  5. java 枚举2

    package com.wsy.test; public enum Color { RED("红色",1),GREEN("绿色",2),BLUE("蓝 ...

  6. php-fpm重启操作

    启动php-fpm:/usr/local/php/sbin/php-fpm php 5.3.3 以后的php-fpm 不再支持 php-fpm 以前具有的 /usr/local/php/sbin/ph ...

  7. nginx跨域

    在 conf文件server块里面加上: add_header 'Access-Control-Allow-Origin' "$http_origin"; add_header ' ...

  8. python脚本参数传递

    环境:python 库:optparse 效果:python  xxx.py  -parameter1  参数1  -parameter2 参数2 .... 废话少说,直接上代码ok?  xxx.py ...

  9. javaweb基础 01--JSP取得绝对路径应用

    1.相关函数说明 * request.getScheme() 等到的是协议名称,默认是http * request.getServerName() 得到的是在服务器的配置文件中配置的服务器名称 比如: ...

  10. jenkins 踩坑路 之 jenkins ssh 脚本

    背景: 由于公司业务调整,整个业务要从阿里云迁移到aws,自然 jenkins 也是要进行迁移的.jenkins 迁移过程中遇到的问题在此记录下,希望能给遇到类似问题的朋友些许帮助.也便于我后期遇到此 ...