Android——程序员的情怀——优化BaseAdapter
2016-05-27 16:21
211 查看
总结:
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; } }
相关文章推荐
- 奋斗吧,程序员——第四十六章 此情可待成追忆,只是当时已惘然
- 再次写给我们这些浮躁的程序员
- 程序员编程时常用的mac快捷方式
- 《欢乐颂》第二季来袭:程序员救美,邱莹莹终于找到靠谱男
- (面试)程序员面试总结汇总(待整理)
- 程序员为什么要时刻保持危机感?
- 不想人生一直在踌躇满志和混吃等死间徘徊
- 经典算法面试题及答案
- 面试题25:二叉树中和为某一个值的路径
- PHP软件工程师面试题
- 面试题21:包含min函数的栈,面试题22:判断某一序列是否是出栈序列
- 再次写给我们这些浮躁的程序员
- 人的差别在于业余时间——细细品味 ==>程序员学习能力提升三要素 ==》程序员学习能力提升三要素 ==>编程从业五年的十四条经验,句句朴实
- 【1】机器学习之一叶知秋:面试总结
- PHP程序员的技术成长规划
- 程序员 跨平台 and 跨语言 学习攻略
- 猿题库面试总结
- 五个JS经典面试题
- 完美适配之安卓百分比布局使用,治好广大安卓程序员的头疼病
- 这是某公司的一个面试题,关于求平均数的java程序,