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等于1,item显示一张图片,type等于2,item显示两张图片,图片路径根据 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
- Android--------多条目展示数据(一种类型只有一个图片,另一种有两个图片)将图片缓存到SD卡
- xListView多条目加载,判断有无图片及图片缓存到sd卡
- 三级缓存之将图片添加到SD卡中
- Android 图片SD卡缓存
- ImageLoader缓存一个网址图片并存到SD卡上
- fragment 展示条目图片
- Android异步加载图片,并缓存到SD卡
- Android从网络获取图片,并缓存到SD卡
- 图片缓存到SD卡中
- listview多条目+图片缓存
- ListView多条目展示 请求网络数据 和图片
- Android将View保存为图片到SD卡
- Xlistview 多条目 图片错位 使用图片缓存显示图片
- 多条目展示ListView(如:有两种不同的布局图片在listview条目上展示)
- ImageLoader缓存图片到SD卡+清除缓存
- android自定义图片三级缓存(内存、SD卡、网络)
- ImageLoader全局类配置 及图片展示配置(自定义缓存目录SD卡根目录)
- 将byte[] 数据输出到页面展示图片
- 关于6-5到6-26日雷鸟管理端项目的总结
- $("")和$("#")
- JAVA之内部类
- python学习之*args和**kw
- Oracle连接数太多报错-ORA-12516错误
- Android--------多条目展示数据(一种类型只有一个图片,另一种有两个图片)将图片缓存到SD卡
- mysql sql语句大全
- 【爬虫】手把手教你写网络爬虫(5)
- Vxworks启动参数详解
- 血红效果
- 倒引符 eval和$()
- 奇偶分割数组
- R极简教程-11:高级绘图函数
- 【LeetCode】215. Kth Largest Element in an Array找第K大的元素