关于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中按钮监听的优化问题(方法二)的更多相关文章

  1. Android 关于ListView中按钮监听的优化问题(方法一)

    在Android应用开发过程中经常会用到ListView,并且每次在item中都要对点击事件进行监听.在给按钮添加OnClickListener时,一般会下意识的在getView()中找到每一个But ...

  2. Android中添加监听回调接口的方法

    在Android中,我们经常会添加一些监听回调的接口供别的类来回调,比如自定义一个PopupWindow,需要让new这个PopupWindow的Activity来监听PopupWindow中的一些组 ...

  3. Android ListView 之 SimpleAdapter 二 (包含 item 中按钮监听)

    1    MainActivity.java package com.myadapter; import java.util.ArrayList; import java.util.HashMap; ...

  4. android中实现监听的四种方法

    (1)自身类作为事件监听器 package cn.edu.gdmec.s07150745.work5; import android.support.v7.app.AppCompatActivity; ...

  5. jquery用append添加按钮之后,按钮监听无法使用的解决方法

    <!DOCTYPE html><html><head><meta charset="utf-8"> <title>< ...

  6. ALERT日志中常见监听相关报错之二:ORA-3136错误的排查

    最近在多个大型系统中遇到此问题,一般来说假设client未反映异常的话能够忽略的. 假设是client登陆时遇到ORA-12170: TNS:Connect timeout occurred,能够參考 ...

  7. Oracle ALERT日志中常见监听相关报错之二:ORA-3136错误的排查 (转载)

    近期在多个大型系统中遇到此问题,一般来说如果客户端未反映异常的话可以忽略的.如果是客户端登陆时遇到ORA-12170: TNS:Connect timeout occurred,可以参考 http:/ ...

  8. Android零基础入门第34节:Android中基于监听的事件处理

    原文:Android零基础入门第34节:Android中基于监听的事件处理 上一期我们学习了Android中的事件处理,也详细学习了Android中基于监听的事件处理,同时学会了匿名内部类形式,那么本 ...

  9. Android中如何监听GPS开启和关闭

    转自 chenming 原文 Android中如何监听GPS开启和关闭   摘要: 本文简单总结了如何监听GPS开关的小技巧 有时需要监听GPS的开关(这种需求并不多见).实现的思路是监听代表 GPS ...

随机推荐

  1. VS2015预览

    VS2015预览版体验   .NET开源了,JAVA颤抖吧...据说VS2015可以开发android,ios,wp应用程序了,还可以开发能运行在mac,linux上的ASP.NET网站,如果真是这样 ...

  2. 原生JS的DOM节点操作

    DOM(Document Object Model/文档对象模型)是针对HTML和XML文档的一个API.DOM节点树:在文档中出现的空格.回车.标签.注释.文本.doctype.标签等都属于DOM节 ...

  3. 让低版本的IE浏览器 强制渲染为IE8 或者 以上 浏览器模式

    让低版本的IE浏览器 强制渲染为IE8 或者 以上 浏览器模式 那么就要用下面的方法:让网页兼容ie9 复制代码 代码如下: <!–[if lte IE 8]> <meta http ...

  4. 【c++类的构造函数具体解释 】

    一.构造函数是干什么的 class Dog { public:          // 类Dog的构造函数          // 特点:以类名作为函数名,无返回类型          Dog()   ...

  5. python网络爬虫进入(一)——简单的博客爬行动物

    最近.对于图形微信公众号.互联网收集和阅读一些疯狂的-depth新闻和有趣,发人深思文本注释,并选择最佳的发表论文数篇了.但看着它的感觉是一个麻烦的一人死亡.寻找一个简单的解决方案的方法,看看你是否可 ...

  6. c#线程的几种启动方法

    一 启动普通线程 ThreadStart与ParameterizedThreadStart建立新线程 优缺点:简单,但难于管理,线程过多会影响系统的性能. 二 启动CLR线程池的工作者线程(普通线程和 ...

  7. 手机新闻网站,掌上移动新闻,手机报client,jQuery Mobile手机新闻网站,手机新闻网站demo,新闻阅读器开发

    我们坐在地铁,经常来查看新浪手机新闻,腾讯新闻.或者刷微信看新闻更多功能.你有没有想过如何实现这些目标.移动互联网,更活泼. 因为HTML5到,jQuery Moblie到.今天我用jqm为了给你一个 ...

  8. ASP.NET MVC项目里创建一个aspx视图

    先从控制器里添加视图 视图引擎选"ASPX(C#)",使用布局或模板页不要选. 在Views\EAV目录里,生成的aspx是个单独的页面,没有代码文件,所以代码也要写在这个文件里. ...

  9. select省市联动选择城市 asp.net mvc4

    本文在 http://www.cnblogs.com/darrenji/p/3606703.html(感谢博主的分享)基础上加入全国各省市,从文件中读取全国省市县,组成省市联动的选择标签 在Model ...

  10. TeamCity vs Jenkins: Which is the Better Continuous Integration (CI) Server for .NET Software Development?

    原文:http://www.excella.com/insights/teamcity-vs-jenkins-better-continuous-integration-server So, you’ ...