listview多条目

来源:互联网 发布:php 字符串转换成html 编辑:程序博客网 时间:2024/05/19 19:42
[java] view plain copy
  1. <pre name="code" class="java"></pre><pre name="code" class="java">关键点提示</pre><pre name="code" class="java">1-->Adapter需要重写getViewTyptCount,getItemViewTypt</pre><pre name="code" class="java"></pre><pre name="code" class="java">getView 方法中要写两个Holder进行优化;</pre><pre name="code" class="java"></pre><pre name="code" class="java"></pre><pre name="code" class="java">一 javabean对象  
  2.   
  3. package com.wzq.moreitemlistviewdemo;  
  4.   
  5. public class Goods {  
  6.     private String name;  
  7.     private String price;  
  8.     private int resId;  
  9.     private int typeId;  
  10.       
  11.       
  12.     public Goods(String name, String price, Integer typeId) {  
  13.         super();  
  14.         this.name = name;  
  15.         this.price = price;  
  16.         this.typeId = typeId;  
  17.     }  
  18.   
  19.   
  20.     public Goods(String name, String price, int resId, Integer typeId) {  
  21.         super();  
  22.         this.name = name;  
  23.         this.price = price;  
  24.         this.resId = resId;  
  25.         this.typeId = typeId;  
  26.     }  
  27.   
  28.   
  29.     public int getTypeId() {  
  30.         return typeId;  
  31.     }  
  32.   
  33.   
  34.     public void setTypeId(int typeId) {  
  35.         this.typeId = typeId;  
  36.     }  
  37.   
  38.   
  39.     public String getName() {  
  40.         return name;  
  41.     }  
  42.   
  43.   
  44.     public void setName(String name) {  
  45.         this.name = name;  
  46.     }  
  47.   
  48.   
  49.     public String getPrice() {  
  50.         return price;  
  51.     }  
  52.   
  53.   
  54.     public void setPrice(String price) {  
  55.         this.price = price;  
  56.     }  
  57.   
  58.   
  59.     public int getResId() {  
  60.         return resId;  
  61.     }  
  62.   
  63.   
  64.     public void setResId(int resId) {  
  65.         this.resId = resId;  
  66.     }  
  67.   
  68.   
  69.     @Override  
  70.     public String toString() {  
  71.         return "Goods [name=" + name + ", price=" + price + ", resId=" + resId  
  72.                 + "]";  
  73.     }  
  74.   
  75.       
  76.       
  77. }  
  78. </pre><br>  
  79. <br>  
  80. <pre></pre>  
  81. <p></p>  
  82. <pre></pre>  
  83. <pre name="code" class="java"><pre name="code" class="java">第二listview和adapter的 写法  
  84. package com.wzq.moreitemlistviewdemo;  
  85.   
  86. import android.os.Bundle;  
  87. import android.support.v7.app.AppCompatActivity;  
  88. import android.view.View;  
  89. import android.view.ViewGroup;  
  90. import android.widget.BaseAdapter;  
  91. import android.widget.ImageView;  
  92. import android.widget.ListView;  
  93. import android.widget.TextView;  
  94.   
  95. import com.nostra13.universalimageloader.core.ImageLoader;  
  96.   
  97. import java.util.ArrayList;  
  98.   
  99. import butterknife.BindView;  
  100. import butterknife.ButterKnife;  
  101.   
  102. /** 
  103.  * listview多条目加载,使用项目使用imageloader,butterknife; 
  104.  */  
  105. public class MainActivity extends AppCompatActivity {  
  106.     @BindView(R.id.lv)  
  107.     ListView lv;  
  108.   
  109.     private ArrayList<Goods> goodsList;  
  110.     String imgUrl = "http://image.tianjimedia.com/uploadImages/2012/067/N80N0GUA36N0.jpg";  
  111.     private ImageView img;  
  112.   
  113.     @Override  
  114.     protected void onCreate(Bundle savedInstanceState) {  
  115.         super.onCreate(savedInstanceState);  
  116.         setContentView(R.layout.activity_main);  
  117.         //使用butterKnife来注解控件;  
  118.         ButterKnife.bind(this);  
  119.         initData();  
  120.   
  121.     }  
  122.   
  123.     private void initData() {  
  124.         goodsList = new ArrayList<Goods>();  
  125.         goodsList.add(new Goods("商品1""21"0));  
  126.         goodsList.add(new Goods("商品3""23"0));  
  127.         goodsList.add(new Goods("商品4""24", R.drawable.hu, 1));  
  128.         goodsList.add(new Goods("商品2""22", R.drawable.hu, 1));  
  129.         goodsList.add(new Goods("商品5""25"0));  
  130.         goodsList.add(new Goods("商品6""26", R.drawable.hu, 1));  
  131.         goodsList.add(new Goods("商品21""21"0));  
  132.         goodsList.add(new Goods("商品5""25"0));  
  133.         goodsList.add(new Goods("商品22""22", R.drawable.hu, 1));  
  134.         goodsList.add(new Goods("商品23""23"0));  
  135.         goodsList.add(new Goods("商品24""24", R.drawable.hu, 1));  
  136.         goodsList.add(new Goods("商品25""25"0));  
  137.         goodsList.add(new Goods("商品26""26", R.drawable.hu, 1));  
  138.         goodsList.add(new Goods("商品31""21"0));  
  139.         goodsList.add(new Goods("商品32""22", R.drawable.hu, 1));  
  140.         goodsList.add(new Goods("商品34""24", R.drawable.hu, 1));  
  141.         goodsList.add(new Goods("商品36""26", R.drawable.hu, 1));  
  142.         goodsList.add(new Goods("商品33""23"0));  
  143.         goodsList.add(new Goods("商品35""25"0));  
  144.   
  145.         //把数据配置给listview  
  146.         lv.setAdapter(new MBaseAdapter());  
  147.     }  
  148.   
  149.     class MBaseAdapter extends BaseAdapter {  
  150.   
  151.         private final int type1 = 0;  
  152.         private final int type2 = 1;  
  153.   
  154.         @Override  
  155.         public int getCount() {  
  156.             return goodsList.size();  
  157.         }  
  158.   
  159.         @Override  
  160.         public Object getItem(int i) {  
  161.             return goodsList.get(i);  
  162.         }  
  163.   
  164.         @Override  
  165.         public long getItemId(int i) {  
  166.             return i;  
  167.         }  
  168.   
  169.         @Override  
  170.         public View getView(int i, View convertView, ViewGroup viewGroup) {  
  171.             int typeId = goodsList.get(i).getTypeId();  
  172.             switch (typeId) {  
  173.                 case type1:  
  174.                     Holder1 holder1 = null;  
  175.                     if (convertView == null) {  
  176.                         holder1 = new Holder1();  
  177.                         convertView = View.inflate(MainActivity.this, R.layout.lv_item_1, null);  
  178.                         holder1.textView1 = convertView.findViewById(R.id.textView1);  
  179.                         holder1.textView2 = convertView.findViewById(R.id.textView2);  
  180.                         convertView.setTag(holder1);  
  181.                     } else {  
  182.                         holder1 = (Holder1) convertView.getTag();  
  183.                     }  
  184.                     holder1.textView1.setText(goodsList.get(i).getName());  
  185.                     holder1.textView2.setText(goodsList.get(i).getPrice());  
  186.                     break;  
  187.                 case type2:  
  188.                     Holder2 holder2 = null;  
  189.                     if (convertView == null) {  
  190.                         holder2 = new Holder2();  
  191.                         convertView = View.inflate(MainActivity.this, R.layout.lv_item_2, null);  
  192.                         holder2.textView1 = convertView.findViewById(R.id.textView1);  
  193.                         holder2.textView2 = convertView.findViewById(R.id.textView2);  
  194.                         holder2.imageView1 = convertView.findViewById(R.id.imageView1);  
  195.                         convertView.setTag(holder2);  
  196.                     } else {  
  197.                         holder2 = (Holder2) convertView.getTag();  
  198.                     }  
  199.                     holder2.textView1.setText(goodsList.get(i).getName());  
  200.                     holder2.textView2.setText(goodsList.get(i).getPrice());  
  201.   
  202. //                            holder2.imageView1.setImageResource(R.drawable.hu);  
  203.                     ImageLoader.getInstance().displayImage(imgUrl, holder2.imageView1);  
  204.                     break;  
  205.   
  206.             }  
  207.             return convertView;  
  208.         }  
  209.   
  210.         //返回条目有多少种类型  
  211.         @Override  
  212.         public int getViewTypeCount() {  
  213.             return 2;  
  214.         }  
  215.   
  216.         //返回条目的类型  
  217.         @Override  
  218.         public int getItemViewType(int position) {  
  219.             return goodsList.get(position).getTypeId();  
  220.         }  
  221.     }  
  222.   
  223.   
  224.     class Holder1 {  
  225.         TextView textView1, textView2;  
  226.     }  
  227.   
  228.     class Holder2 {  
  229.         TextView textView1, textView2;  
  230.         ImageView imageView1;  
  231.     }  
  232.   
  233. }  
  234.   
  235.   
  236. </pre><br>  
  237. <br>  
  238. <pre></pre>  
  239. <pre name="code" class="java"></pre><pre name="code" class="java"></pre><pre name="code" class="java"></pre><pre name="code" class="java"></pre><pre name="code" class="java"></pre><p></p></pre>  
  240.