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

来源:互联网 发布:自动关注软件下载 编辑:程序博客网 时间:2024/04/30 04:21
首先布局: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 0
原创粉丝点击