listView多条目

来源:互联网 发布:ps修复软件下载 编辑:程序博客网 时间:2024/06/07 07:24
import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.ListView;import android.widget.TextView;import com.bwei.Bean.Goods;import com.nostra13.universalimageloader.core.ImageLoader;import java.util.ArrayList;//一、整个布局是一个listview,而listview里面是嵌套了不同展示类型的item,// 平常只显示一种listview条目,我们会用到常用的四个方法,但是显示不同种类型item的时候,// 还需要实现两个重要的API//        1.//返回条目的类型//        getItemViewType()//        2.//返回条目有多少种类型//        getViewTypeCount()//        二.我们要通过定义的type,也就是0.1.2.3,或者在网上获取的类型type,//           在getView方法中通过判断去展示不同的item.
这里图片使用

ImageLoader写的 别忘的加

-依赖 compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'


3--重写MApp类extends Application, 切记要在清单文件调用;切记要在清单文件调用;切记要在清单文件调用;

public class MainActivity extends AppCompatActivity {    //list集合    private ArrayList<Goods> list;    //路径    String imgUrl = "http://image.tianjimedia.com/uploadImages/2012/067/N80N0GUA36N0.jpg";    //控件    private ListView lv;    //调用方法    private ImageLoader instance;    //获取适配器    private MyAdaper myAdaper;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //出事值        indata();        //控件        lv = (ListView) findViewById(R.id.lv);        //获取Mapp来的参数        instance = ImageLoader.getInstance();        //实力化适配器        myAdaper = new MyAdaper();        //获取适配器        lv.setAdapter(myAdaper);    }    private void indata() {        //集合        list = new ArrayList<Goods>();        list.add(new Goods("商品3", "23", 0));        list.add(new Goods("商品4", "24", imgUrl, 1));        list.add(new Goods("商品2", "22", imgUrl, 1));        list.add(new Goods("商品5", "25", 0));        list.add(new Goods("商品6", "26", imgUrl, 1));        list.add(new Goods("商品21", "21", 0));        list.add(new Goods("商品5", "25", 0));        list.add(new Goods("商品22", "22", imgUrl, 1));        list.add(new Goods("商品23", "23", 0));        list.add(new Goods("商品24", "24", imgUrl, 1));        list.add(new Goods("商品25", "25", 0));        list.add(new Goods("商品26", "26", imgUrl, 1));        list.add(new Goods("商品31", "21", 0));        list.add(new Goods("商品32", "22", imgUrl, 1));        list.add(new Goods("商品34", "24", imgUrl, 1));        list.add(new Goods("商品36", "26", imgUrl, 1));        list.add(new Goods("商品33", "23", 0));        list.add(new Goods("商品35", "25", 0));        Log.e("tag", list.toString() + "+++++++++");    }    class MyAdaper extends BaseAdapter {        @Override        public int getCount() {            return list.size();        }        @Override        public Object getItem(int i) {            return null;        }        @Override        public long getItemId(int i) {            return 0;        }        //当你的listview里的布局多样化的时候,viewholder的作用就比较的体现了        //加入你两种模式的布局,当方式回收的时候,你会用setTag分别记录是哪两种        //这两种模式会被封装到viewholder中进行保存方便下次使用        @Override        public View getView(int i, View view, ViewGroup viewGroup) {            //取出id来判断多条目            int id = list.get(i).getId();            switch (id) {                case 0:                    viewholder1 holder1 = null;                    if (holder1 == null) {                        holder1 = new viewholder1();                        view = View.inflate(MainActivity.this, R.layout.f1, null);                        holder1.tv = view.findViewById(R.id.tv);                        view.setTag(holder1);                    } else {                        holder1 = (viewholder1) view.getTag();                    }                    holder1.tv.setText(list.get(i).getName() + "  " + list.get(i).getPrice());                    break;                case 1:                    viewholder2 holder2 = null;                    if (holder2 == null) {                        holder2 = new viewholder2();                        view = View.inflate(MainActivity.this, R.layout.f2, null);                        holder2.tv1 = view.findViewById(R.id.tv1);                        holder2.image = view.findViewById(R.id.img);                        view.setTag(holder2);                    } else {                        holder2 = (viewholder2) view.getTag();                    }                    holder2.tv1.setText(list.get(i).getName() + "  " + list.get(i).getPrice());                    ;                    String Urlimg = list.get(i).getImg();                    instance.displayImage(Urlimg, holder2.image);                    break;            }            return view;        }        //返回条目有多少种类型        @Override        public int getViewTypeCount() {            return 2;        }        //需要实现两个重要的API(getViewTypeCount()、getItemViewType())        //返回条目的类型        @Override        public int getItemViewType(int position) {            return list.get(position).getId();        }    }    public class viewholder1 {        TextView tv;    }    public class viewholder2 {        TextView tv1;        ImageView image;    }}
原创粉丝点击