Android——程序员的情怀——优化BaseAdapter







总结:
1- 在MainActivity中只放数据,加载适配器
2- 单独定义实体类
3- 自定义适配器,并与实体类相关联,在适配器里写优化的代码将视图与数据相关联
MainActivity

2- News.java

3- BaseAdapterDAO.java
package com.example.cycle_toolbar_drawer.BaseAdapter; 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.example.cycle_toolbar_drawer.R; import java.util.ArrayList;
import java.util.List;
import java.util.zip.Inflater; /**
* Created by Administrator on 2016/5/26 0026.
*添加数据的baseAdapter实现类
*/
public class BaseAdapterDAO extends BaseAdapter {
//通过构造方法获取数据源中的数据,与适配器关联起来
private List<News> mNews;
private LayoutInflater mLayoutInflater; public BaseAdapterDAO(Context context,List<News> news){
mNews = news;
//context要使用当前的Adapter的界面对象mLayoutInflater布局装载器对象
mLayoutInflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
return mNews.size();
}
@Override
public Object getItem(int i) {
return mNews.get(i);
} @Override
public long getItemId(int i) {
return i;
} @Override
public View getView(int i, View view, ViewGroup viewGroup) { //2- 定义ViewHolder
ViewHolder viewHolder;
if (view == null) {
//3- 实例化ViewHolder 并且适配ViewHolder中的三个参数
viewHolder = new ViewHolder();
view = mLayoutInflater.inflate(R.layout.content_listview_linear, null);
viewHolder.ViewHolder_imageView = (ImageView) view.findViewById(R.id.content_listView_imageView);
viewHolder.ViewHolder_title = (TextView) view.findViewById(R.id.content_listView_Title);
viewHolder.ViewHolder_content = (TextView) view.findViewById(R.id.content_listView_Content); //4- 通过setTag将ViewHolder与view相关联
view.setTag(viewHolder);
}else {
//5- 当不为空的时候直接通过getTag方法找到控件
viewHolder = (ViewHolder) view.getTag();
}
News newsItem = mNews.get(i);
viewHolder.ViewHolder_imageView.setImageResource(newsItem.getItem_image_Resource_id());
viewHolder.ViewHolder_title.setText(newsItem.getItem_Title());
viewHolder.ViewHolder_content.setText(newsItem.getItem_Content()); return view; /* 普通方式
ImageView content_listView_imageView = (ImageView) view.findViewById(R.id.content_listView_imageView);
TextView content_listView_Title = (TextView) view.findViewById(R.id.content_listView_Title);
TextView content_listView_Content = (TextView) view.findViewById(R.id.content_listView_Content); News newsItem = mNews.get(i);
content_listView_imageView.setImageResource(newsItem.getItem_image_Resource_id());
content_listView_Title.setText(newsItem.getItem_Title());
content_listView_Content.setText(newsItem.getItem_Content());
return view;*/
}
// 文艺式 ——避免通过findViewById找内容而浪费资源和时间 //1- 创建内部类ViewHolder
class ViewHolder{
public ImageView ViewHolder_imageView;
public TextView ViewHolder_title;
public TextView ViewHolder_content;
}
}
Android——程序员的情怀——优化BaseAdapter的更多相关文章
- Android程序员必知必会的网络通信传输层协议——UDP和TCP
1.点评 互联网发展至今已经高度发达,而对于互联网应用(尤其即时通讯技术这一块)的开发者来说,网络编程是基础中的基础,只有更好地理解相关基础知识,对于应用层的开发才能做到游刃有余. 对于Android ...
- 迈向高阶:优秀Android程序员必知必会的网络基础
1.前言 网络通信一直是Android项目里比较重要的一个模块,Android开源项目上出现过很多优秀的网络框架,从一开始只是一些对HttpClient和HttpUrlConnection简易封装使用 ...
- IT观察】网络通信、图片显示、数据库操作……Android程序员如何利用开源框架
每个Android 程序员都不是Android应用开发之路上孤军奋战的一个人,GitHub上浩如烟海的开源框架或类库就是前人为我们发明的轮子,有的轮子能提高软件性能,而有的轮子似乎是以牺牲性能为代价换 ...
- Android 程序员必须知道的 53 个知识点
1. android 单实例运行方法 我们都知道 Android 平台没有任务管理器,而内部 App 维护者一个 Activity history stack 来实现窗口显示和销毁,对于常规从快捷方式 ...
- Android程序员的进阶之路
本文主要论述的是Android程序员的进阶之路,博主本人就是一名android开发攻城狮,所以这里讲述的大多数是android开发攻城狮的技术进阶之路,如有问题请多指正. 大家都知道程序员之中有有菜鸟 ...
- Android程序员接下来的路该如何走?
随着“5G”(第五代移动通信技术)商用进程越来越快,各个芯片和终端厂商们都已经开始布局准备,想必智能手机会是消费者最先能够接触到5G的重要终端,而和其相辅相生的移动互联网也势必会有新的发展. 但是和行 ...
- 面试利器!字节跳动2021年Android程序员面试指导小册已开源
整份手册分为两个部分,分别是:Java部分.Android部分.数据结构与算法篇.字节跳动2020年全年面试题总结篇! 每个知识点都有左侧导航书签页,看的时候十分方便,由于内容较多,这里就截取一部分图 ...
- 【定有惊喜】android程序员如何做自己的API接口?php与android的良好交互(附环境搭建),让前端数据动起来~
一.写在前面 web开发有前端和后端之分,其实android还是有前端和后端之分.android开发就相当于手机app的前端,一般都是php+android或者jsp+android开发.androi ...
- 给Android程序员的六个建议
给Android程序员的六个建议 分类: 安卓相关2015-07-14 23:58 177人阅读 评论(0) 收藏 举报 android程序员 如果你一年前写的代码 , 在现在看来你还感觉写的很不错 ...
随机推荐
- asp.net C#取Excel 合并单元格内容
asp教程.net c#取excel 合并单元格内容读取excel数据,填充dataset// 连接字符串 string xlspath = server.mappath("~/www.11 ...
- struts系列:校验(二)自定义校验器
一.自定义校验类 public class PasswordValidator extends FieldValidatorSupport { @Override public void valida ...
- iphone5刷机教程
如果不想麻烦可以在越狱之后添加源,cydia.china3gpp.com打ios7的补丁就可以了 机器为iphone5 美国sprint有锁版 1. 首先备份需要的程序和数据(把各种缓存的影片删掉再备 ...
- hackerrank-knapsack
https://www.hackerrank.com/challenges/unbounded-knapsack 题目描述: #include <iostream> #include &l ...
- Navicat for SQL Server(SQLServer数据库管理)
Navicat for SQL Server 是一套专为 Mircosoft SQL Server设计的强大数据库管理及开发工具.它可以用于 SQL Server 2000.2005 及 2008R2 ...
- 【Android开发】交互界面布局详解
原文:http://android.eoe.cn/topic/summary Android 的系统 UI 为构建您自己的应用提供了基础的框架.主要包括主屏幕 (Home Screen).系统 UI ...
- Python 父目录获取
# coding=utf-8import os currentPath = os.getcwd() # 当前目录parent_path = os.path.dirname(currentPath) # ...
- apicloud开发笔记
第一次用apicloud做正式项目 ,下面把做的过程中用到的代码段列出来....都是从文档里复制的代码,只是感觉官网那个文档好难找哦... 注:api.????的方法都是在APP中调用才行的,$api ...
- xcode代码没颜色的解决方案
转自:http://blog.csdn.net/jiarusun000/article/details/7527631 今天代码使用了svn后发现项目中的所有原文件都没颜色了... 查找半天后发现是因 ...
- SSH框架整合开发具体解释(个人笔记)
一.创建数据库并设置编码. A) create database oa default character set utf8. 二.MyEclipseproject A) 在Myeclipse里创建w ...