listView多条目

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;

    }


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值