ListView多条目加载

来源:互联网 发布:ftp服务使用的端口是 编辑:程序博客网 时间:2024/05/21 09:09
  1. /** 
  2.  * listview多条目加载,使用项目使用imageloader,butterknife; 
  3.  */  
  4. public class MainActivity extends AppCompatActivity {  
  5.     @BindView(R.id.lv)  
  6.     ListView lv;  
  7.   
  8.     private ArrayList<Goods> goodsList;  
  9.     String imgUrl = "http://image.tianjimedia.com/uploadImages/2012/067/N80N0GUA36N0.jpg";  
  10.     private ImageView img;  
  11.   
  12.     @Override  
  13.     protected void onCreate(Bundle savedInstanceState) {  
  14.         super.onCreate(savedInstanceState);  
  15.         setContentView(R.layout.activity_main);  
  16.         //使用butterKnife来注解控件;  
  17.         ButterKnife.bind(this);  
  18.         initData();  
  19.   
  20.     }  
  21.   
  22.     private void initData() {  
  23.         goodsList = new ArrayList<Goods>();  
  24.         goodsList.add(new Goods("商品1""21"0));  
  25.         goodsList.add(new Goods("商品3""23"0));  
  26.         goodsList.add(new Goods("商品4""24", R.drawable.hu, 1));  
  27.         goodsList.add(new Goods("商品2""22", R.drawable.hu, 1));  
  28.         goodsList.add(new Goods("商品5""25"0));  
  29.         goodsList.add(new Goods("商品6""26", R.drawable.hu, 1));  
  30.         goodsList.add(new Goods("商品21""21"0));  
  31.         goodsList.add(new Goods("商品5""25"0));  
  32.         goodsList.add(new Goods("商品22""22", R.drawable.hu, 1));  
  33.         goodsList.add(new Goods("商品23""23"0));  
  34.         goodsList.add(new Goods("商品24""24", R.drawable.hu, 1));  
  35.         goodsList.add(new Goods("商品25""25"0));  
  36.         goodsList.add(new Goods("商品26""26", R.drawable.hu, 1));  
  37.         goodsList.add(new Goods("商品31""21"0));  
  38.         goodsList.add(new Goods("商品32""22", R.drawable.hu, 1));  
  39.         goodsList.add(new Goods("商品34""24", R.drawable.hu, 1));  
  40.         goodsList.add(new Goods("商品36""26", R.drawable.hu, 1));  
  41.         goodsList.add(new Goods("商品33""23"0));  
  42.         goodsList.add(new Goods("商品35""25"0));  
  43.   
  44.         //把数据配置给listview  
  45.         lv.setAdapter(new MBaseAdapter());  
  46.     }  
  47.   
  48.     class MBaseAdapter extends BaseAdapter {  
  49.   
  50.         private final int type1 = 0;  
  51.         private final int type2 = 1;  
  52.   
  53.         @Override  
  54.         public int getCount() {  
  55.             return goodsList.size();  
  56.         }  
  57.   
  58.         @Override  
  59.         public Object getItem(int i) {  
  60.             return goodsList.get(i);  
  61.         }  
  62.   
  63.         @Override  
  64.         public long getItemId(int i) {  
  65.             return i;  
  66.         }  
  67.   
  68.         @Override  
  69.         public View getView(int i, View convertView, ViewGroup viewGroup) {  
  70.             int typeId = goodsList.get(i).getTypeId();  
  71.             switch (typeId) {  
  72.                 case type1:  
  73.                     Holder1 holder1 = null;  
  74.                     if (convertView == null) {  
  75.                         holder1 = new Holder1();  
  76.                         convertView = View.inflate(MainActivity.this, R.layout.lv_item_1, null);  
  77.                         holder1.textView1 = convertView.findViewById(R.id.textView1);  
  78.                         holder1.textView2 = convertView.findViewById(R.id.textView2);  
  79.                         convertView.setTag(holder1);  
  80.                     } else {  
  81.                         holder1 = (Holder1) convertView.getTag();  
  82.                     }  
  83.                     holder1.textView1.setText(goodsList.get(i).getName());  
  84.                     holder1.textView2.setText(goodsList.get(i).getPrice());  
  85.                     break;  
  86.                 case type2:  
  87.                     Holder2 holder2 = null;  
  88.                     if (convertView == null) {  
  89.                         holder2 = new Holder2();  
  90.                         convertView = View.inflate(MainActivity.this, R.layout.lv_item_2, null);  
  91.                         holder2.textView1 = convertView.findViewById(R.id.textView1);  
  92.                         holder2.textView2 = convertView.findViewById(R.id.textView2);  
  93.                         holder2.imageView1 = convertView.findViewById(R.id.imageView1);  
  94.                         convertView.setTag(holder2);  
  95.                     } else {  
  96.                         holder2 = (Holder2) convertView.getTag();  
  97.                     }  
  98.                     holder2.textView1.setText(goodsList.get(i).getName());  
  99.                     holder2.textView2.setText(goodsList.get(i).getPrice());  
  100.   
  101. //                            holder2.imageView1.setImageResource(R.drawable.hu);  
  102.                     ImageLoader.getInstance().displayImage(imgUrl, holder2.imageView1);  
  103.                     break;  
  104.   
  105.             }  
  106.             return convertView;  
  107.         }  
  108.   
  109.         //返回条目有多少种类型  
  110.         @Override  
  111.         public int getViewTypeCount() {  
  112.             return 2;  
  113.         }  
  114.   
  115.         //返回条目的类型  
  116.         @Override  
  117.         public int getItemViewType(int position) {  
  118.             return goodsList.get(position).getTypeId();  
  119.         }  
  120.     }  
  121.   
  122.   
  123.     class Holder1 {  
  124.         TextView textView1, textView2;  
  125.     }  
  126.   
  127.     class Holder2 {  
  128.         TextView textView1, textView2;  
  129.         ImageView imageView1;  
  130.     }  
  131.   
  132. }