zoukankan      html  css  js  c++  java
  • 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;
        }
    }
  • 相关阅读:
    linux软件安装与卸载
    杂项搜集整理
    AS3的反编译
    linux驱动杂项
    Android 匿名共享内存C++接口分析
    S3C2440 之SPI
    二叉树
    ajax简介
    SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is enabled
    让 collabtive-11 支持中文
  • 原文地址:https://www.cnblogs.com/Chenshuai7/p/5535053.html
Copyright © 2011-2022 走看看