【Android】以BaseAdapter做适配器的ListView及其性能优化
适配器的Java类
- package com.app.adapter;
- import org.json.JSONArray;
- import org.json.JSONObject;
- import android.R.integer;
- import android.content.Context;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.BaseAdapter;
- import android.widget.ImageView;
- import android.widget.TextView;
- import com.app.test01.R;
- public class MyWeixinJSON extends BaseAdapter{
- private LayoutInflater mInflater;// 动态布局映射
- private JSONArray list;
- private Context context;
- private int i = 0;
- public MyWeixinJSON(JSONArray list,Context context){
- this.list = list;
- this.context = context;
- this.mInflater = LayoutInflater.from(context);
- }
- @Override
- public int getCount() {
- // TODO Auto-generated method stub
- return list.length();
- }
- @Override
- public Object getItem(int position) {
- // TODO Auto-generated method stub
- return null;
- }
- @Override
- public long getItemId(int position) {
- // TODO Auto-generated method stub
- return 0;
- }
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- // TODO Auto-generated method stub
- convertView = mInflater.inflate(R.layout.item_weixin, null);//根据布局文件实例化view
- try {
- JSONObject jObject = list.getJSONObject(position);
- TextView title = (TextView) convertView.findViewById(R.id.title);//找某个控件
- title.setText(jObject.get("title").toString());//给该控件设置数据(数据从集合类中来)
- TextView time = (TextView) convertView.findViewById(R.id.time);
- time.setText(jObject.get("time").toString());
- TextView info = (TextView) convertView.findViewById(R.id.info);
- info.setText(jObject.get("info").toString());
- ImageView img = (ImageView) convertView.findViewById(R.id.img);
- img.setBackgroundResource((Integer)jObject.get("img"));
- } catch (Exception e) {
- // TODO: handle exception
- }
- return convertView;
- }
- }
Activity类
- package com.app.test01;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import org.json.JSONArray;
- import org.json.JSONObject;
- import android.app.Activity;
- import android.os.Bundle;
- import android.widget.ListView;
- import com.app.adapter.MyWeixinJSON;
- import com.app.adapter.MyWeixinList;
- public class ListViewBase extends Activity{
- private ListView lv;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- // TODO Auto-generated method stub
- super.onCreate(savedInstanceState);
- setContentView(R.layout.weixin);
- lv = (ListView) findViewById(R.id.lv);
- MyWeixinJSON mJson = new MyWeixinJSON(getJSONArray(),this);
- lv.setAdapter(mJson);
- }
- private JSONArray getJSONArray(){
- JSONArray jsonArray = new JSONArray();
- try {
- for (int i = 1; i <= 30; i++) {
- JSONObject jsonObject = new JSONObject();
- jsonObject.put("title", "姓名"+i);
- jsonObject.put("time", "9月29日");
- jsonObject.put("info", "我通过了你的好友验证请求,现在我们可以开始对话啦");
- jsonObject.put("img", R.drawable.special_spring_head2);
- jsonArray.put(jsonObject);
- }
- } catch (Exception e) {
- // TODO: handle exception
- }
- return jsonArray;
- }
- }
ListView的性能优化
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- // TODO Auto-generated method stub
- System.out.println("正在渲染第"+position+"行 +++ "+ i++);
- OneView oneView;
- if (convertView == null) {
- convertView = mInflater.inflate(R.layout.item_weixin, null);//根据布局文件实例化view
- oneView = new OneView();
- oneView.title = (TextView) convertView.findViewById(R.id.title);//找某个控件
- oneView.time = (TextView) convertView.findViewById(R.id.time);
- oneView.info = (TextView) convertView.findViewById(R.id.info);
- oneView.img = (ImageView) convertView.findViewById(R.id.img);
- convertView.setTag(oneView);//把View和某个对象关联起来
- } else {
- oneView = (OneView) convertView.getTag();
- }
- JSONObject jObject = null;
- try {
- jObject = list.getJSONObject(position);//根据position获取集合类中某行数据
- oneView.title.setText(jObject.get("title").toString());//给该控件设置数据(数据从集合类中来)
- oneView.time.setText(jObject.get("time").toString());
- oneView.info.setText(jObject.get("info").toString());
- oneView.img.setBackgroundResource((Integer)jObject.get("img"));
- } catch (Exception e) {
- // TODO: handle exception
- }
- return convertView;
- }
- /** 把每行布局文件的各个控件包装成一个对象 */
- private class OneView{
- TextView title;
- TextView time;
- TextView info;
- ImageView img;
- }
【Android】以BaseAdapter做适配器的ListView及其性能优化的更多相关文章
- 转-ListView的性能优化之convertView和viewHolder
ListView的性能优化之convertView和viewHolder 2014-05-14 参考:http://www.cnblogs.com/xiaowenji/archive/2010/12/ ...
- 安卓ListView的性能优化
在安卓APP中LIstView这个控件可以说基本上是个APP就会用到,但是关于ListView除了需要了解其最基本的用法外,作为一个要做出高性能APP的程序员还需了解一些关于LIstView控件性能优 ...
- 【Android】以SimpleAdapter做适配器的ListView和GridView
SimpleAdapter介绍 SimpleAdapter是一个简单的适配器,可以将静态数据映射到XML文件中定义好的视图. 构造函数 public SimpleAdapter (Context co ...
- Android 对BaseAdapter做优化处理
对于BaseAdapter相信大家都不陌生,都知道该怎样用.怎样显示数据.怎样尽可能的把每个item做的令自己满意.但问题来了:有些朋友会说我界面做的非常的漂亮,数据也显示的非常完美,但是问什么我的L ...
- ListView之性能优化
listview加载的核心是其adapter,本文通过减少adapter中创建.处理view的次数来提高listview加载的性能,总共分四个层次: 0.最原始的加载 1.利用convertView ...
- ListView的性能优化之convertView和viewHolder
转载请注明出处 最近碰到的面试题中经常会碰到问"ListView的优化"问题.所以就拿自己之前写的微博客户端的程序做下优化. 自己查了些资料,看了别人写的博客,得出结论,ListV ...
- 安卓中listview中性能优化的处理
1.在adapter中的getView方法中尽量少使用逻辑 不要在你的getView()中写过多的逻辑代码,我们能够将这些代码放在别的地方.比如: 优化前的getView(): @Override p ...
- ListView的性能优化
@Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHol ...
- Android开发进阶从小工到专家之性能优化
随机推荐
- 在mac上安装hadoop伪分布式
换了macbook pro之后,要重新安装hadoop,但是mac上的jdk跟windows上的不同,导致折腾了挺久的,现在分享出来,希望对大家有用. 一:下载jdk 选择最新版本下载,地址:http ...
- 区间dp笔记√
区间DP是一类在区间上进行dp的最优问题,一般是根据问题设出一个表示状态的dp,可以是二维的也可以是三维的,一般情况下为二维. 然后将问题划分成两个子问题,也就是一段区间分成左右两个区间,然后将左右两 ...
- *[topcoder]IncrementingSequence
http://community.topcoder.com/stat?c=problem_statement&pm=12107 此题想了半天,当时瞥到了Greedy,所以就想着贪心,最后的方法 ...
- c/c++优秀博文
C进阶指南(1):整型溢出和类型提升.内存申请和管理 http://blog.jobbole.com/72830/ 软件开发中应避免的10个问题
- C语言中时间调用处理的相关函数介绍
asctime(将时间和日期以字符串格式表示) 相关函数:time,ctime,gmtime,localtime 表头文件:#include<time.h> 定义函数:char * asc ...
- 简单的算法题, Find Minimum in Rotated Sorted Array 的Python实现。
简单的算法题, Find Minimum in Rotated Sorted Array 的Python实现. 题目: Suppose a sorted array is rotated at som ...
- 车牌识别LPR(二)-- 车牌特征及难点
第二篇:车牌的特征及难点 2.1 对我国车牌的认识 我国目前使用的汽车牌号标准是 2007 年开始实施的<中华人民共和国机动车号牌>GA36-2007(2010 年修订).根据 GA36 ...
- LA 3029 - City Game (简单扫描线)
题目链接 题意:给一个m*n的矩阵, 其中一些格子是空地(F), 其他是障碍(R).找一个全部由F 组成的面积最大的子矩阵, 输出其面积乘以3的结果. 思路:如果用枚举的方法,时间复杂度是O(m^2 ...
- Android中View转换为Bitmap及getDrawingCache=null的解决方法
1.前言 Android中经常会遇到把View转换为Bitmap的情形,比如,对整个屏幕视图进行截屏并生成图片:Coverflow中需要把一页一 页的view转换为Bitmap.以便实现复杂的图形效果 ...
- Test语言编译器V0.8
感觉这个挺好耍的,书上的代码有错误,而且功能有限. 一.词法分析 特点: (1)可对中文进行识别:(2)暂不支持负数,可以在读入‘-'时进行简单标记后就能对简单负数进行识别了. #include &l ...