• Android之ListView优化


     1 import java.util.List;
     2 
     3 import com.example.contentprovider.R;
     4 import com.example.entity.ImagePath;
     5 import com.example.util.Util;
     6 
     7 import android.content.Context;
     8 import android.view.LayoutInflater;
     9 import android.view.View;
    10 import android.view.ViewGroup;
    11 import android.widget.BaseAdapter;
    12 import android.widget.ImageView;
    13 import android.widget.TextView;
    14 
    15 public class MyBaseAdapter extends BaseAdapter {
    16     private List<ImagePath> imagePaths;
    17     Context context;
    18     
    19     public MyBaseAdapter(List<ImagePath> list, Context context) {
    20         super();
    21         this.imagePaths = list;
    22         this.context = context;
    23     }
    24 
    25     @Override
    26     public int getCount() {
    27         // TODO Auto-generated method stub
    28         return imagePaths.size();
    29     }
    30 
    31     @Override
    32     public Object getItem(int arg0) {
    33         // TODO Auto-generated method stub
    34         return imagePaths.get(arg0);
    35     }
    36 
    37     @Override
    38     public long getItemId(int arg0) {
    39         // TODO Auto-generated method stub
    40         return arg0;
    41     }
    42 
    43     @Override
    44     public View getView(int arg0, View arg1, ViewGroup arg2) {
    45         MyView myView = null;
    46         View view ;
    47         //arg1 如果为null则执行该代码;该if判断的作用是优化List:如果arg1为null的时候获取布局该布局会缓存在arg1中,创建myView对象
    48         //将myView对象存放在view中!当arg1不为空时取出view中的myView对象和缓存中的view
    49         if(arg1 == null){
    50             //实例化MyView对象
    51             myView = new MyView();
    52             //获取LayoutInflater对象
    53             LayoutInflater inflater = LayoutInflater.from(context);
    54             //通过inflater获取ListView中的item的布局
    55             view = inflater.inflate(R.layout.mybaseadapter,null);
    56             //获取item布局的组件
    57             myView.imageView = (ImageView) view.findViewById(R.id.id_image);
    58             myView.textName = (TextView) view.findViewById(R.id.id_textName);
    59             myView.textNum = (TextView) view.findViewById(R.id.id_textNum);
    60             //将myView对象存进view中
    61             view.setTag(myView);
    62         }else{
    63             //如果arg1不为null,将arg1赋给view
    64             view = arg1;
    65             //将存放在view中的MyView对象取出来
    66             myView = (MyView) view.getTag();
    67         }
    68         myView.textName.setText(imagePaths.get(arg0).getPakagePath());
    69         myView.textNum.setText("共"+imagePaths.get(arg0).getListPth().size()+"张");
    70         myView.imageView.setImageBitmap(Util.getBitmapByPath(imagePaths.get(arg0).getListPth().get(0),86,86));
    71         return view;
    72     }
    73 
    74 }
    75     class MyView{
    76         TextView textName;
    77         TextView textNum;
    78         ImageView imageView;
    79     }

    才接触android,在慢慢的自学!后续会更新

  • 相关阅读:
    SiteMesh在项目中的配置
    javascript深入理解js闭包
    小tip: 使用CSS将图片转换成黑白(灰色、置灰)
    java程序员最不愿意看到的十件事
    Spring AOP AspectJ
    2万字Java并发编程面试题整理(含答案,建议收藏)
    85道Java微服务面试题整理(助力2020面试)
    10个很多人不知道的Redis使用技巧
    2020年大厂Java面试题(基础+框架+系统架构+分布式+实战)
    2020年薪30W的Java程序员都要求熟悉JVM与性能调优!
  • 原文地址:https://www.cnblogs.com/shiguotao-com/p/5170298.html
Copyright © 2020-2023  润新知