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程序员 如果你一年前写的代码 , 在现在看来你还感觉写的很不错 ...
随机推荐
- Android RGB颜色查询对照表
因为兼容性问题,色阶板功能只能在IE浏览器中运行 RGB颜色对照表 #FFFFFF #FFFFF0 #FFFFE0 #FFFF00 #FFFAFA #FFFAF0 #FFF ...
- GANS 资料
https://blog.csdn.net/a312863063/article/details/83512870 目 录第一章 初步了解GANs 3 1. 生成模型与判别模型. 3 2. 对抗网络思 ...
- Java多线程框架Executor详解
原文链接 http://www.imooc.com/article/14377 为什么引入Executor线程池框架new Thread()的缺点 每次new Thread()耗费性能调用ne ...
- robotframework + appium 获取android toast
android toast 获取主要方式是在出现toast的时候查找元素:xpath=//*[contains(@text,'记同步')] ,该xpath 表示为toast信息含有 "记 ...
- IDEA快捷键收集
生成set 和get方法 .生产重写方法Alt+Insert 查看类的所有方法alt + 7 去掉多余的引用包alt + ctrl + O ctrl + alt + t 生成try 语句 自动导入包 ...
- http断点下载客户端和服务端
客户端:import java.io.BufferedInputStream;import java.io.File;import java.io.RandomAccessFile;import ja ...
- x86-64整数寄存器
- 【Unity】第6章 Unity脚本开发基础
分类:Unity.C#.VS2015 创建日期:2016-04-16 一.简介 游戏吸引人的地方在于它的可交互性.如果游戏没有交互,场景做得再美观和精致,也难以称其为游戏. 在Unity中,游戏交互通 ...
- .NET MVC+ EF+通用存储过程实现增删改功能以及使用事物处理
引摘: 1.EF对事务进行了封装:无论何时执行任何涉及Create,Update或Delete的查询,都会默认创建事务.当DbContext类上的SaveChanges()方法被调用时,事务就会提交, ...
- 【转】(八)unity4.6Ugui中文教程文档-------概要-UGUI Rich Text
原创至上,移步请戳:(八)unity4.6Ugui中文教程文档-------概要-UGUI Rich Text 7.Rich Text UI元素和文本网格的文本可以合并多个字体样式和大小.对 UI系统 ...