Android 关于ListView中按钮监听的优化问题(方法二)
关于ListView中按钮监听的优化问题(方法一)地址:
http://www.cnblogs.com/steffen/p/3951901.html
之前的方法一,虽然能够解决position的传递,但是我们一般在监听事件中会经常用到Context和存储数据的集合ArrayList,若每次都要将这么多的数据传递给Button的话,那个Button的数据量必然会增大。
因此,参考方法一我们可以将Button的监听事件写成Adapter的内部中,方便我们调用Adapter中的所有数据。废话不多说,直接上代码:
// ...
private ButtonClickListener btnClickListener ;
public ItemAdapter(Context c, ArrayList<Map<String, Object>> appList, int resource, String[] from, int[] to) {
super(c, appList, resource, from, to);
btnClickListener = new ButtonClickListener();
}
@Override
public View getView(int position, View converView, ViewGroup parentView) {
Handler handler = null;
View view = convertView;
if(convertView == null) {
view = LayoutInflater.from(activity).inflate(R.layout.item_list, null);
handler= new Handler();
handler.button = view.findViewById(R.id.item_list_btn);
18 handler.button.setOnclickListener(btnClickListener);
view.setTag(handler);
} else {
handler = (Handler) view.getTag();
}
// ...
handler.button.setTag(position);
25 return view;
26 }
private class ButtonClickListener implements View.OnClickListener {
@Override
public void onClick(View arg0) {
int position = (Integer) ((Button) arg0).getTag();
// ...
}
}
36 private class Handler {
37 Button btn;
}
Android 关于ListView中按钮监听的优化问题(方法二)的更多相关文章
- Android 关于ListView中按钮监听的优化问题(方法一)
在Android应用开发过程中经常会用到ListView,并且每次在item中都要对点击事件进行监听.在给按钮添加OnClickListener时,一般会下意识的在getView()中找到每一个But ...
- Android中添加监听回调接口的方法
在Android中,我们经常会添加一些监听回调的接口供别的类来回调,比如自定义一个PopupWindow,需要让new这个PopupWindow的Activity来监听PopupWindow中的一些组 ...
- Android ListView 之 SimpleAdapter 二 (包含 item 中按钮监听)
1 MainActivity.java package com.myadapter; import java.util.ArrayList; import java.util.HashMap; ...
- android中实现监听的四种方法
(1)自身类作为事件监听器 package cn.edu.gdmec.s07150745.work5; import android.support.v7.app.AppCompatActivity; ...
- jquery用append添加按钮之后,按钮监听无法使用的解决方法
<!DOCTYPE html><html><head><meta charset="utf-8"> <title>< ...
- ALERT日志中常见监听相关报错之二:ORA-3136错误的排查
最近在多个大型系统中遇到此问题,一般来说假设client未反映异常的话能够忽略的. 假设是client登陆时遇到ORA-12170: TNS:Connect timeout occurred,能够參考 ...
- Oracle ALERT日志中常见监听相关报错之二:ORA-3136错误的排查 (转载)
近期在多个大型系统中遇到此问题,一般来说如果客户端未反映异常的话可以忽略的.如果是客户端登陆时遇到ORA-12170: TNS:Connect timeout occurred,可以参考 http:/ ...
- Android零基础入门第34节:Android中基于监听的事件处理
原文:Android零基础入门第34节:Android中基于监听的事件处理 上一期我们学习了Android中的事件处理,也详细学习了Android中基于监听的事件处理,同时学会了匿名内部类形式,那么本 ...
- Android中如何监听GPS开启和关闭
转自 chenming 原文 Android中如何监听GPS开启和关闭 摘要: 本文简单总结了如何监听GPS开关的小技巧 有时需要监听GPS的开关(这种需求并不多见).实现的思路是监听代表 GPS ...
随机推荐
- Erlang常用代码段
十六进制字符串转为二进制 hex_to_bin(Bin) -> hex2bin(Bin). hex2bin(Bin) when is_binary(Bin) -> hex2bin(bina ...
- Java 多线程之内存一致性错误
当不同的线程针对相同的数据却读到了不同的值时就发生了内存一致性错误.内存一致性错误的原因是非常复杂的.幸运的是我们程序员不需要详细的理解这些原因,我们需要做的事情就是使用策略来规避这些. 避免内存一致 ...
- leetcode第22题--Merge k Sorted Lists
problem:Merge k sorted linked lists and return it as one sorted list. Analyze and describe its compl ...
- CSS3教程:box-sizing属性的理解border、padding与容器宽度的关系
说到 IE 的 bug,一个臭名昭著的例子是它对于“盒模型”的错误解释:在 IE5.x 以及 Quirks 模式的 IE6/7 中,将 border 与 padding 都包含在 width 之内.这 ...
- [WebGL入门]十六,绘制多个模型
注意:文章翻译http://wgld.org/.原作者杉本雅広(doxas),文章中假设有我的额外说明,我会加上[lufy:],另外.鄙人webgl研究还不够深入.一些专业词语.假设翻译有误.欢迎大家 ...
- nginx+lua+redis高并发应用建设
ngx_lua将lua嵌nginx,让nginx运行lua脚本.高并发,非堵塞过程中的各种请求. url要求nginxserver,然后lua查询redis,返回json数据. 一.安装lua-ngi ...
- leetcode[105] Construct Binary Tree from Inorder and Postorder Traversal
代码实现:给定一个中序遍历和后序遍历怎么构造出这颗树!(假定树中没有重复的数字) 因为没有规定是左小右大的树,所以我们随意画一颗数,来进行判断应该是满足题意的. 3 / \ 2 4 /\ / \1 6 ...
- Redmine(Ruby)配置经验
Redmine(Ruby)配置经验记录在配置Redmine邮件同步过程中遇到的各种问题与解决方法 1. 如何安装Redminehttp://www.redmine.org/projects/redmi ...
- [转]How To Use CSS3 Media Queries To Create a Mobile Version of Your Website
CSS3 continues to both excite and frustrate web designers and developers. We are excited about the p ...
- java 命令笔记
http://www.hollischuang.com/archives/105 JPS jps位于jdk的bin目录下,其作用是显示当前系统的java进程情况,及其id号. jps相当于Solari ...