zoukankan      html  css  js  c++  java
  • Anroid必学之BaseAdapter适配器

    Andriod中的适配器有Adapter、SimpleAdapter和BaseAdapter.而我们今天重点学习的是最后一种BaseAdapter,也是Android最常用的一种了....

    第一步:把布局画好,直接写一个ListView列表

       <ListView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/listView"
            ></ListView>
    

    第二步:来新建一个Item布局

     <ImageView
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:id="@+id/img"
            android:background="@mipmap/ic_launcher"
            />
        <TextView
            android:gravity="center"
            android:layout_width="match_parent"
            android:layout_height="30dp"
            android:layout_toRightOf="@+id/img"
            android:id="@+id/tv01"
            android:text="00"
            />
        <TextClock
            android:layout_width="match_parent"
            android:layout_height="30dp"
            android:id="@+id/tv02"
            android:layout_toRightOf="@+id/img"
            android:layout_below="@+id/tv01"
            />
    
    

    第三步:新建一个ItemBean类

    public class ItemBean {
       //都为公有,可以访问的
        public int ItemImageId;
        public String ItemTitle;
        public String ItemCount;
    
        //创建一个构造方法
        ItemBean(int itemImageId, String itemTitle, String itemCount){
            ItemImageId=itemImageId;
            ItemTitle=itemTitle;
            ItemCount=itemCount;
        }
    }
    
    

    第四步:新建一个Java类,类名为MyBaseAdapter,继承自BaseAdapter

    
    public class MyBaseAdapter extends BaseAdapter {//继承自BaseAdapter进行导包
    
        //数据源与数据适配器进行关联
        private List<ItemBean> mList;//一个集合,写在TtemBean中
        private LayoutInflater mInflater;
     
        //创建一个构造方法
        MyBaseAdapter(Context context, List<ItemBean> list){
            mList=list;
            mInflater=LayoutInflater.from(context);
        }
    
        //导过包出来的四个方法。
        @Override
        public int getCount() {
            return mList.size();//返回ListVIew所需要显示的数据量
        }
    
        @Override
        public Object getItem(int i) {
            return mList.get(i);//集合的位置
        }
    
        @Override
        public long getItemId(int i) {
            return i;//id
        }
    
        //最最最重要的方法,这才是主要写逻辑的方法
        @Override
        public View getView(int i, View view, ViewGroup viewGroup) {
    
           ViewHolder viewHolder;//定义一个类
    
            if(view==null){
    
              viewHolder=new ViewHolder();//对ViewHolder类进行实例化
    
                view=mInflater.inflate(R.layout.item,null);//加载item布局
    
               /*
                *第一个参数是要加载的布局
                *第二个参数一般默认设置为null
                *
                */
                
                //寻找ViewHolder中控件的Id,
                viewHolder.ImageId= (ImageView) view.findViewById(R.id.img);
    
                viewHolder.Title= (TextView) view.findViewById(R.id.tv01);
    
                viewHolder.Count= (TextView) view.findViewById(R.id.tv02);
    
                //通过setTag将view与ViewHolder绑定
                view.setTag(viewHolder);
            }else{
                //通过ViewHolder对象找到对应的空文件
                viewHolder= (ViewHolder) view.getTag();
            }
    
            ItemBean bean=mList.get(i);
    
            //对ViewHolder类中的控件进行赋值
            viewHolder.ImageId.setImageResource(bean.ItemImageId);
    
            viewHolder.Title.setText(bean.ItemTitle);
    
            viewHolder.Count.setText(bean.ItemCount);
    
            return view;//返回一个View
        }
        /*
         *创建一个内部类ViewHolder
         * 为了避免findViewById的重复的操作
         */
        class ViewHolder{
            private ImageView ImageId;
            private TextView Title;
            private TextView  Count;
        }
    
    }
    
    

    第五步;最后来到我们期待已久的主JAVA类

    ##1.初始化控件
    
      private ListView listView;
      
        private ItemBean itemBean;//对ItemBean类进行初始化
    
    ##2.在onCreate方法中进行编写
       
        List<ItemBean> itemBeen=new ArrayList<>();
            for(int i=0;i<20;i++){
    
                itemBeen.add( new ItemBean(R.mipmap.ic_launcher,"我是标题"+i,"我是内容"+i));
            }
           listView= (ListView) findViewById(R.id.listView);//寻找Id
    
                                /*
                                 *创建一个适配器MyBaseAdapter
                                 *第一个参数:上下文
                                 *第二个参数:相当于是一个数据源
                                 */
    
            listView.setAdapter(new MyBaseAdapter(this,itemBeen));//将listView与适配器进行绑
    
          
        }
     
    

    最后我们来看下运行结果

  • 相关阅读:
    【转载】零基础学Support Vector Machine(SVM)
    【转载】前向传播算法(Forward propagation)与反向传播算法(Back propagation)
    python 3.5 解决csv 读入中的'utf-8' codec can't decode办法
    pandas用法大全
    南阳理工OJ 题目168.房间安排问题与题目14.会场安排问题
    C++中IO设置数字精度问题
    C++中memset()函数笔记
    Java 编程命名规范
    数据类型内存分配--js基础
    对象--js基础
  • 原文地址:https://www.cnblogs.com/zyl222/p/6575722.html
Copyright © 2011-2022 走看看