首先布局: 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(); } });
Android--------多条目展示数据(一种类型只有一个图片,另一种有两个图片)将图片缓存到SD卡
最新推荐文章于 2024-07-22 12:26:20 发布