• 6.7


    今日收获:

    MutiLayoutAdapter.java:

    /**
    * Created by Jay on 2015/9/23 0023.
    */
    public class MutiLayoutAdapter extends BaseAdapter{

    //定义两个类别标志
    private static final int TYPE_BOOK = 0;
    private static final int TYPE_APP = 1;
    private Context mContext;
    private ArrayList<Object> mData = null;


    public MutiLayoutAdapter(Context mContext,ArrayList<Object> mData) {
    this.mContext = mContext;
    this.mData = mData;
    }

    @Override
    public int getCount() {
    return mData.size();
    }

    @Override
    public Object getItem(int position) {
    return mData.get(position);
    }

    @Override
    public long getItemId(int position) {
    return position;
    }

    //多布局的核心,通过这个判断类别
    @Override
    public int getItemViewType(int position) {
    if (mData.get(position) instanceof App) {
    return TYPE_APP;
    } else if (mData.get(position) instanceof Book) {
    return TYPE_BOOK;
    } else {
    return super.getItemViewType(position);
    }
    }

    //类别数目
    @Override
    public int getViewTypeCount() {
    return 2;
    }


    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
    int type = getItemViewType(position);
    ViewHolder1 holder1 = null;
    ViewHolder2 holder2 = null;
    if(convertView == null){
    switch (type){
    case TYPE_APP:
    holder1 = new ViewHolder1();
    convertView = LayoutInflater.from(mContext).inflate(R.layout.item_one, parent, false);
    holder1.img_icon = (ImageView) convertView.findViewById(R.id.img_icon);
    holder1.txt_aname = (TextView) convertView.findViewById(R.id.txt_aname);
    convertView.setTag(R.id.Tag_APP,holder1);
    break;
    case TYPE_BOOK:
    holder2 = new ViewHolder2();
    convertView = LayoutInflater.from(mContext).inflate(R.layout.item_two, parent, false);
    holder2.txt_bname = (TextView) convertView.findViewById(R.id.txt_bname);
    holder2.txt_bauthor = (TextView) convertView.findViewById(R.id.txt_bauthor);
    convertView.setTag(R.id.Tag_Book,holder2);
    break;
    }
    }else{
    switch (type){
    case TYPE_APP:
    holder1 = (ViewHolder1) convertView.getTag(R.id.Tag_APP);
    break;
    case TYPE_BOOK:
    holder2 = (ViewHolder2) convertView.getTag(R.id.Tag_Book);
    break;
    }
    }

    Object obj = mData.get(position);
    //设置下控件的值
    switch (type){
    case TYPE_APP:
    App app = (App) obj;
    if(app != null){
    holder1.img_icon.setImageResource(app.getaIcon());
    holder1.txt_aname.setText(app.getaName());
    }
    break;
    case TYPE_BOOK:
    Book book = (Book) obj;
    if(book != null){
    holder2.txt_bname.setText(book.getbName());
    holder2.txt_bauthor.setText(book.getbAuthor());
    }
    break;
    }
    return convertView;
    }


    //两个不同的ViewHolder
    private static class ViewHolder1{
    ImageView img_icon;
    TextView txt_aname;
    }

    private static class ViewHolder2{
    TextView txt_bname;
    TextView txt_bauthor;
    }
    }

  • 相关阅读:
    Java自学-多线程 线程池
    Java自学-多线程 交互
    Java自学-多线程 死锁
    Java自学-多线程 线程安全的类
    Windows任务计划定时执行脚本简介
    利用 Powershell 编写简单的浏览器脚本
    Edge浏览器现已支持Tampermonkey(油猴)
    Chrome扩展移植到Edge浏览器教程
    <Android> Location Service 分析
    <OPTEE>Trusted Application结构分析
  • 原文地址:https://www.cnblogs.com/20193898liufa/p/14911612.html
Copyright © 2020-2023  润新知