Android--------多条目展示数据(一种类型只有一个图片,另一种有两个图片)将图片缓存到SD卡

首先布局:
item1(只有一个图片的)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    >

    <ImageView
        android:id="@+id/image_view1"
        android:layout_width="200dp"
        android:layout_height="200dp" />

    <LinearLayout
        android:layout_width="190dp"
        android:layout_height="200dp"
        android:orientation="vertical"
        >

        <TextView
            android:id="@+id/title1"
            android:layout_width="190dp"
            android:layout_height="100dp"
            android:text="fdsdfsd"/>

        <TextView
            android:id="@+id/id1"
            android:layout_width="190dp"
            android:layout_height="100dp"
            android:text="fdsdfsd"/>
    </LinearLayout>
</LinearLayout>

item2(有两个图片的) 
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:orientation="horizontal">

        <ImageView
            android:id="@+id/image_view2"
            android:layout_width="0dp"
            android:layout_height="200dp"
            android:layout_weight="1"/>
        <ImageView
            android:id="@+id/image_view22"
            android:layout_width="0dp"
            android:layout_height="200dp"
            android:layout_weight="1"/>
    </LinearLayout>
   <TextView
       android:id="@+id/title2"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="ssssssss"/>

</LinearLayout>
 
题目要求:

根据type等于1item显示一张图片,type等于2item显示两张图片,图片路径根据 pic 中的 “分割

  适配器类(多条目展示,并用imageLoader加载图片,缓存到SD卡)
public class Myadapter extends BaseAdapter {
    private ArrayList<News.ListBean> mlist;
    private Context mcontext;
    //定义样式常量,注意常量值要从0开始
    private final int type1=0;
    private  final int type2=1;
    private ImageLoader imageloader;
    private DisplayImageOptions options;
    public Myadapter(Context mcontext,ArrayList<News.ListBean> list) {

        this.mcontext = mcontext;
        this.mlist=list;
        //创建默认的ImageLoader配置参数
              //  ImageLoaderConfiguration configuration = ImageLoaderConfiguration
                   //     .createDefault(mcontext);

                //将configuration配置到imageloader中
                imageloader= ImageLoader.getInstance();
        //设置缓存到SD路径
        File file=new File(Environment.getExternalStorageDirectory(),"HAHA");
        if (!file.exists()){
            file.mkdirs();
        }
        ImageLoaderConfiguration con=new ImageLoaderConfiguration.Builder(mcontext)
                .diskCache(new UnlimitedDiskCache(file))
                .build();


                imageloader.init(con);

                options=new DisplayImageOptions.Builder()
                        .cacheInMemory(true)
                        .cacheOnDisk(true)
                        .bitmapConfig(Bitmap.Config.ARGB_8888)
                        .showImageOnLoading(R.mipmap.ic_launcher)
                        .showImageForEmptyUri(R.mipmap.ic_launcher)
                        .showImageOnFail(R.mipmap.ic_launcher)
                        .build();
        /*
            DisplayImageOptions options = new DisplayImageOptions.Builder()
              .showImageOnLoading(R.drawable.ic_stub)            //加载图片时的图片
              .showImageForEmptyUri(R.drawable.ic_empty)         //没有图片资源时的默认图片
              .showImageOnFail(R.drawable.ic_error)              //加载失败时的图片
              .cacheInMemory(true)                               //启用内存缓存
              .cacheOnDisk(true)                                 //启用外存缓存
              .considerExifParams(true)                          //启用EXIF和JPEG图像格式
              .displayer(new RoundedBitmapDisplayer(20))         //设置显示风格这里是圆角矩形
              .build();
         */

                        //加载图片最重要的一行代码
                      //  imageloader.displayImage(bean.getImgSrc(),holder.image,options);
    }

    //手动重写的方法
    @Override
    public int getItemViewType(int position) {
        //   return super.getItemViewType(position);
        //获得类型  type2为有两个图片的那种类型  type1为一个图片的类型
        //
       return mlist.get(position).getType()==1?type1:type2;

    }

    //手动重写的方法
    @Override
    public int getViewTypeCount() {
        return 2;
    }

    @Override
    public int getCount() {

        return mlist==null?0:mlist.size();
    }

    @Override
    public Object getItem(int position) {

        return mlist.get(position);
    }

    @Override
    public long getItemId(int position) {

        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder vh;
        int type = getItemViewType(position);
        //对convertView进行判空
        if (convertView==null){
            vh=new ViewHolder();
            //对类型的分类
            if (type==type1) {
                //类型一为只有一个图片的情况,选中布局为item1,并找到该布局中的ID

                convertView = View.inflate(mcontext, R.layout.item1, null);
                vh.title = (TextView) convertView.findViewById(R.id.title1);
                vh.id = (TextView) convertView.findViewById(R.id.id1);
                vh.iv = (ImageView) convertView.findViewById(R.id.image_view1);
            }else if(type==type2) {

                //类型二是文字和两个图片的情况,选中布局为item2,并找到该布局中的ID
                convertView = View.inflate(mcontext, R.layout.item2, null);
                vh.title = (TextView) convertView.findViewById(R.id.title2);
                vh.iv = (ImageView) convertView.findViewById(R.id.image_view2);
                vh.iv1=(ImageView)convertView.findViewById(R.id.image_view22);

            }
            //设置标签
            convertView.setTag(vh);
        }else{
            //得到标签
            vh=(ViewHolder)convertView.getTag();
        }
        //得到该类,当是类型2的时候加载图片,
        News.ListBean news = mlist.get(position);
        //如果是两个图片的类型首先得到图片,然后拆分字符串最后用imageloader加载图片
        if (type==type2) {
            vh.title.setText(news.getTitle());
           String pic= news.getPic();
            String[] urls = pic.split("\\|");
            if (urls.length>=2){
                imageloader.displayImage(urls[0],vh.iv,options);
                imageloader.displayImage(urls[1],vh.iv1,options);
            }

           // Glide.with(mcontext).load(news.getPic()).into(vh.iv);
           // Glide.with(mcontext).load(news.getPic()).into(vh.iv1);
        }else if (type==type1){
            vh.title.setText(news.getTitle());
          vh.id.setText(news.getId()+"");
           // Glide.with(mcontext).load(news.getPic()).into(vh.iv);
            imageloader.displayImage(news.getPic(),vh.iv,options);
        }
        return convertView;
    }

    class ViewHolder{
        ImageView iv,iv1;
        TextView title;
        TextView id;
    }
}

---------------------------------------------------------------------------------------------------


点击listview条目弹出对话框显示点击条目的信息
//xlistview条目的点击事件
 mxv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
     @Override
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

          //因为点击后显示一个图片,所以自己写一个图片的布局 imageload,找到id
        View v = View.inflate(MainActivity.this, R.layout.imageload, null);
         ImageView iv=(ImageView)v.findViewById(R.id.imageload);
         if (position>0&&position<mlist.size()){
             Glide.with(MainActivity.this).load(mlist.get(position-1).getPic()).into(iv);
         }


         AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this)

               .setView(v)
               .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                   @Override
                   public void onClick(DialogInterface dialog, int which) {
                     dialog.dismiss();
                   }
               })
               .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                   @Override
                   public void onClick(DialogInterface dialog, int which) {
                       dialog.dismiss();
                   }
               });
         builder.create().show();

     }
 });

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值