多条目加载 adapter

package zhanghaijiao.bawei.com.httpget_demo;


import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;


import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache;
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;


import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.InetSocketAddress;
import java.net.MalformedURLException;
import java.net.Proxy;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;


/**
 * Created by jane on 2017/12/26.
 */


public class MyAdapter extends BaseAdapter {




    public Context context;
    public List<ResultData.NewslistBean> data;
    private final DisplayImageOptions options;


    //定义类型的int  int值必须 小于 item类型的数量,否则会报数组越界的error
    private final int ITEM_TITLE=0;//只有文字无图的类型
    private final int ITEM_IMAGE=1;//有图的类型






    //alt+insert
    public MyAdapter(Context context, List<ResultData.NewslistBean> data) {
        this.context = context;
        this.data = data;






        //2.需要创建DisplayImageOption类 两种 1,使用默认设置 2.自定义设置
        //使用内存缓存
//使用磁盘缓存
//设置正在下载的图片
//url为空或请求的资源不存在时
//下载失败时显示的图片
//设置图片色彩模式 1px=2字节
//设置图片的缩放模式
//设置圆角 30代表半径 自定义
        options = new DisplayImageOptions.Builder()
                .cacheInMemory(true)//使用内存缓存
                .cacheOnDisk(true)//使用磁盘缓存
                .showImageOnLoading(R.mipmap.ic_launcher)//设置正在下载的图片
                .showImageForEmptyUri(R.mipmap.ic_launcher)//url为空或请求的资源不存在时
                .showImageOnFail(R.mipmap.ic_launcher)//下载失败时显示的图片
                .bitmapConfig(Bitmap.Config.RGB_565)//设置图片色彩模式 1px=2字节
                .imageScaleType(ImageScaleType.EXACTLY)//设置图片的缩放模式
                .displayer(new RoundedBitmapDisplayer(100))//设置圆角 30代表半径 自定义
                .build();
    }




    //返回item的类型总数  多条目的数量
    @Override
    public int getViewTypeCount() {
        return 2;
    }


    //返回指定postion的条目的类型,返回的是一个int类型的值
    @Override
    public int getItemViewType(int position) {
        if(position%2==0){//是偶数
            return ITEM_IMAGE;
        }else{
            return ITEM_TITLE;//奇数行
        }


    }


    @Override
    public int getCount() {
        return data.size();
    }


    @Override
    public Object getItem(int i) {
        return data.get(i);
    }


    @Override
    public long getItemId(int i) {
        return i;
    }


    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        //根据不同的类型,去加载不同的布局
        int type = getItemViewType(i);
        if(type==ITEM_IMAGE){
            ViewHolder holder;
            if(view==null){
                view=View.inflate(context,R.layout.item,null);
                holder=new ViewHolder();
                holder.tv=view.findViewById(R.id.tv);
                holder.imageView=view.findViewById(R.id.img);
                view.setTag(holder);
            }else{
                holder=(ViewHolder) view.getTag();
            }
            holder.tv.setText(data.get(i).getTitle());
            //打印图片url路径
            Log.d("zzz",data.get(i).getPicUrl());


            //3.下载图片
            ImageLoader.getInstance().displayImage(data.get(i).getPicUrl(),holder.imageView,options);
            return view;


        }else {
            ViewHolderTitle holderTitle;
            if(view==null){
                view=View.inflate(context,R.layout.item_title,null);
                holderTitle=new ViewHolderTitle();
                holderTitle.textView=view.findViewById(R.id.tv);


                view.setTag(holderTitle);
            }else{
                holderTitle=(ViewHolderTitle) view.getTag();
            }
            holderTitle.textView.setText(data.get(i).getTitle());


            return view;




        }














    }
    //item里的控件
    class ViewHolder{
        TextView tv;
        ImageView imageView;
    }
    //item_title
    class ViewHolderTitle{
        TextView textView;
    }






}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值