ListView中的item中的Onclick事件的优化
- ListView的Adapter的优化布局载入器的载入次数最典型的使用方法是使用convertView进行优化,让convertView当做布局载入器的载体,也就是.重用 convertView
用以避免反复创建 View。反复创建 View 代价较大,并且假设重用 view 不改变宽高,重用View能够降低又一次分配缓存造成的内存频繁分配/回收; - convertView = LayoutInflater.from(context).inflate(R.layout.子布局, null)
- 避免在 getView 中有 反复调用的 findViewById
findViewById 的实现是遍历。假设你定义的 View 越复杂代价越大。
Google 推荐的做法是用 ViewHolder,然后保存在 view 的 tag 中。 如今 RecyclerView 也是强制使用 ViewHolder 了。findViewById由于Adapter中的getView方法运行好多次,所以须要优化,,那么典型的优化是是使用ViewHolder一说这个词你应该知道是如何优化(不会的问百度)
- 就是优化item中的点击事件,
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null; if (convertView == null) { holder = new ViewHolder(); convertView = LinearLayout.inflate(R.layout.vlist, null);
holder.title = (TextView) convertView.findViewById(R.id.title);
holder.info = (TextView) convertView.findViewById(R.id.info);
holder.viewBtn = (Button) convertView.findViewById(R.id.view_btn); //使用convertView复用点击事件
holder.title.setOnClickListener(holder);
holder.info.setOnClickListener(holder);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
} //使用传递參数的形式给点击事件设置内容.
//须要的话,就用addLIst传递过去须要的參数.
holder.addList(position,context);
holder.title.setText((String) mData.get(position).get("title"));
holder.info.setText((String) mData.get(position).get("info")); return convertView;
}
} //提取出来方便点
final class ViewHolder implements View.OnClickListener {
public TextView title;
public TextView info;
public Button viewBtn;
int mPosition;
Context context; public void addList(int inPosition,Context context) {
mPosition = inPosition;
this.context = context;
} @Override
public void onClick(View v) {
//写入item中的点击事件
//...
//v.getTag();
switch (v.getId()){
case R.id.title:
Toast.makeText(context, "点击了title----"+mPosition, Toast.LENGTH_SHORT).show(); break;
case R.id.info: Toast.makeText(context, "点击了info====>>"+mPosition, Toast.LENGTH_SHORT).show();
break; }
}
}
5.这样也就避免的在getView中进行耗时操作有空在更,,菜鸟欢迎指点,一起探讨listView的优化,,
6.就是让ListView在高速滑动的时候停止载入图片,有空补充.
ListView中的item中的Onclick事件的优化的更多相关文章
- ListView中的组件Button的OnClick事件触发时机
Android开发时,ListView中的组件Button的OnClick事件必须在ListView之外的组件事件触发后才能触发? 此处ListView无OnItemClick事件,而且ListVie ...
- ListView中响应item的点击事件并且刷新界面
---恢复内容开始--- 最近在在实现listview功能中遇到了这个问题: 点击事件写在了adapter的item中,不知道如何在listview的点击事件中更新数据的显示: 总结:1.要使用not ...
- 文件重命名之动态改动ListView里指定Item中的组件属性
在Android实际开发过程中常常会遇到,改动ListView中某一项的值.怎样达到这一目的呢? 方法主要有两种: 第一种方式:当ListView中某一项的值发生变化之后,又一次载入数据已达到更新Li ...
- Android处理ListView中的Item中的Button按钮不能点击的问题
问题描述:ListView列表中的Button按钮按钮不能点击 解决办法:在ListView中的Item项的布局文件中加上:android:descendantFocusability="b ...
- JavaScript例子1-给网页中所有<p>元素添加onclick事件
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- ListView中的Item不能点击的解决方法
有时,为了实现某种功能,在Android程序中会考虑在ListView的每一个Item中添加一个Button(或ImageButton等). 但是,这样会出现一个问题: 当同时设置了Button的on ...
- 为listview的item中的元素设置onclick事件
表达能力比较差,所以现在解释一下标题的意思:listview的列表项,点击的时候触发的是itemOnClick事件,点击后转向到A页:那么,假如在子项中有一个连接是想转到B页,我们该怎么办呢.这样能明 ...
- ListView item 中TextView 如何获取长按事件
昨天晚上小伙伴突然来信, ListView item中嵌套的TextView 无法获取长按事件 从前从来没有仔细留意过, coding后发现...果然没什么动静 而且没有合适的API让我调用获取Tex ...
- android ListView中的Item有Button时候点击异常处理
1.当ListView中有Button的时候往往会遇到很多问题,比较常见的一个问题是: 假设:在ListView中有N个Item当点击其中某个Item中的Button的时候,需要改变当前Button的 ...
随机推荐
- 大数据小白系列——HDFS(1)
[注1:结尾有大福利!] [注2:想写一个大数据小白系列,介绍大数据生态系统中的主要成员,理解其原理,明白其用途,万一有用呢,对不对.] 大数据是什么?抛开那些高大上但笼统的说法,其实大数据说的是两件 ...
- git命令详解( 五 )
此篇只会来介绍rebase和merge的区别 rebase merge 区别 rebase 下面我们进行一个小练习来练习一下rebase 看一下题目要求: 共有三个特性分支 —— side1 side ...
- SpringBoot统一处理异常
在springboot项目,报错有着默认的提示,这篇文章介绍一下如何统一处理异常. 新建项目,pom文件如下: <?xml version="1.0" encoding=&q ...
- C#导出Excel时间格式问题
Range range = worksheet.get_Range(worksheet.Cells[2, 1], worksheet.Cells[RowCount + 1, ColCount]);ra ...
- XamarinSQLite教程下载安装SQLite/SQL Server Compact Toolbox
XamarinSQLite教程下载安装SQLite/SQL Server Compact Toolbox SQLite/SQL Server Compact Toolbox是一个Visual Stud ...
- OSPF补全计划-2
想起来几个面试题: 1. OSPF在什么情况下会stuck in Exstart /Exchange状态? 我知道的一个答案是两个端口的mtu不一致.当然整个也不是绝对,因为可以用ip ospf mt ...
- 第一本docker书,,持续更新中
1.查看应用是否在docker中部署成功 需要确认curl已安装 whereis curl sudo apt-get -y install curl curl localhost:8081 如果成 ...
- MySQL(四)
分组 按照字段分组,表示此字段相同的数据会被放到一个组中 分组后,只能查询出相同的数据列,对于有差异的数据列无法出现在结果集中 可以对分组后的数据进行统计,做聚合运算 语法: select 列1,列2 ...
- C++程序设计方法3:移动构造函数
移动拷贝构造函数 语法: ClassName(ClassName&&); 目的: 用来偷“临时变量”中的资源(比如内存) 临时变量被编译器设置为常量形式,使用拷贝构造函数无法将资源偷出 ...
- git上传本地项目到github,方法2
第一步:去github上创建自己的Repository,创建页面如下图所示: 填写相应信息后点击create即可 Repository name: 仓库名称 Description(可选): 仓库描述 ...