总结:

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的更多相关文章

  1. Android程序员必知必会的网络通信传输层协议——UDP和TCP

    1.点评 互联网发展至今已经高度发达,而对于互联网应用(尤其即时通讯技术这一块)的开发者来说,网络编程是基础中的基础,只有更好地理解相关基础知识,对于应用层的开发才能做到游刃有余. 对于Android ...

  2. 迈向高阶:优秀Android程序员必知必会的网络基础

    1.前言 网络通信一直是Android项目里比较重要的一个模块,Android开源项目上出现过很多优秀的网络框架,从一开始只是一些对HttpClient和HttpUrlConnection简易封装使用 ...

  3. IT观察】网络通信、图片显示、数据库操作……Android程序员如何利用开源框架

    每个Android 程序员都不是Android应用开发之路上孤军奋战的一个人,GitHub上浩如烟海的开源框架或类库就是前人为我们发明的轮子,有的轮子能提高软件性能,而有的轮子似乎是以牺牲性能为代价换 ...

  4. Android 程序员必须知道的 53 个知识点

    1. android 单实例运行方法 我们都知道 Android 平台没有任务管理器,而内部 App 维护者一个 Activity history stack 来实现窗口显示和销毁,对于常规从快捷方式 ...

  5. Android程序员的进阶之路

    本文主要论述的是Android程序员的进阶之路,博主本人就是一名android开发攻城狮,所以这里讲述的大多数是android开发攻城狮的技术进阶之路,如有问题请多指正. 大家都知道程序员之中有有菜鸟 ...

  6. Android程序员接下来的路该如何走?

    随着“5G”(第五代移动通信技术)商用进程越来越快,各个芯片和终端厂商们都已经开始布局准备,想必智能手机会是消费者最先能够接触到5G的重要终端,而和其相辅相生的移动互联网也势必会有新的发展. 但是和行 ...

  7. 面试利器!字节跳动2021年Android程序员面试指导小册已开源

    整份手册分为两个部分,分别是:Java部分.Android部分.数据结构与算法篇.字节跳动2020年全年面试题总结篇! 每个知识点都有左侧导航书签页,看的时候十分方便,由于内容较多,这里就截取一部分图 ...

  8. 【定有惊喜】android程序员如何做自己的API接口?php与android的良好交互(附环境搭建),让前端数据动起来~

    一.写在前面 web开发有前端和后端之分,其实android还是有前端和后端之分.android开发就相当于手机app的前端,一般都是php+android或者jsp+android开发.androi ...

  9. 给Android程序员的六个建议

    给Android程序员的六个建议 分类: 安卓相关2015-07-14 23:58 177人阅读 评论(0) 收藏 举报 android程序员 如果你一年前写的代码 , 在现在看来你还感觉写的很不错 ...

随机推荐

  1. javascript的崛起及其生态元素

    随着web的流行,人们花在浏览器上的时间吸引了巨头们对浏览器的重视,继而几年前富客户端概念,一批富客户端技术的涌现,如silverlight, flex等,曾经风起云涌,最终都败给了html5 和 j ...

  2. systemctl 命令

    systemctl命令是系统服务管理器指令,它实际上将 service 和 chkconfig 这两个命令组合到一起. 任务 旧指令 新指令 使某服务自动启动 chkconfig --level 3 ...

  3. 用python参加Kaggle的经验总结【转】

    用python参加Kaggle的经验总结 转载自:http://www.jianshu.com/p/32def2294ae6,作者 JxKing    最近挤出时间,用python在kaggle上试了 ...

  4. 在 Visual Studio 2017 中找回消失的“在浏览器中查看”命令

    不知为何,在新安装 Visual Studio 2017 后,发现所有 Web 项目上右键菜单的"在浏览器中查看"命令消失了,只能以调试模式启动网站,非常别扭. 最后在 Stack ...

  5. android笔记---百度地图api应用 (一)

    package com.example.bdtest; import com.baidu.mapapi.MKEvent; import com.baidu.mapapi.MKPlanNode; imp ...

  6. numpy数组-截取部分

    import numpy as np a = np.array([1,2,3,4,5]) slice = a[:3] slice[0] = 100 print(a) # 结果 [100,2,3,4,5 ...

  7. 21、uwp UI自动化测试(WinAppDriver)

    使用 UI自动化测试的好处就是在代码逻辑中写好 case 后,来实现 “一劳永逸” 的作用,并且自动化测试能够模拟人工达不到要求,比如快速切换页面.快速点击按钮等,对于提高软件的稳定性很有帮助. 安装 ...

  8. 使用windowAnimations定义Activity及Dialog的进入退出效果

    看了android的源代码和资源文件,终于明白如何去修改设置Dialog和Activity的进入和退出效果了.设置Dialog首先通过getWindow()方法获取它的窗口,然后通过getAttrib ...

  9. Hadoop守护进程【简】

    [转自]http://xzx4959.blog.163.com/blog/static/47868170201311901848348/ 一般如果正常启动hadoop,我们可以在master上通过jp ...

  10. VMware的快照和克隆总结

    原文:https://www.cnblogs.com/zxz1987/p/6480833.html 多重快照功能简介:  快照的含义:对某一个特定文件系统在某一个特定时间内的一个具有只读属性的镜像.当 ...