ListView多条目不同类型主要是根据当前position的判断来进行当前视图的填充 由此返回不同类型的item。
MainActivity
package com.example.administrator.listview_type; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.widget.ListView; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { private ListView mLv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); //自定义数据 List<String> list = new ArrayList<>(); for (int i = 0; i < 2; i++) { list.add("1"); list.add("2"); list.add("3"); list.add("http://img.ph.126.net/ocT0cPlMSiTs2BgbZ8bHFw==/631348372762626203.jpg"); list.add("https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=1511928397,1744182508&fm=28&gp=0.jpg"); list.add("http://imgsrc.baidu.com/image/c0%3Dshijue1%2C0%2C0%2C294%2C40/sign=32c015eaf6039245b5b8e94ceffdceb7/d788d43f8794a4c28c10040c04f41bd5ad6e39e2.jpg"); } mLv.setAdapter(new MyAdapter(list,this)); } //找控件 private void initView() { mLv = (ListView) findViewById(R.id.lv); } }//用到了ImageLoaderUtils (自定义工具类主要是方便使用ImageLoader)
package com.example.administrator.listview_type; import android.content.Context; import android.graphics.Bitmap; import android.widget.ImageView; 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; public class ImageLoaderUtils { public static void setImageView(String url, Context context, ImageView imageView) { //初始化 ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context).build(); //创建Imageloader 对象 ImageLoader imageLoader = ImageLoader.getInstance(); //设置初始化 imageLoader.init(config); DisplayImageOptions options = new DisplayImageOptions.Builder() .showImageOnLoading(R.mipmap.ic_launcher) //设置图片在下载期间显示的图片 .showImageForEmptyUri(R.mipmap.ic_launcher)//设置图片Uri为空或是错误的时候显示的图片 .showImageOnFail(R.mipmap.ic_launcher) //设置图片加载/解码过程中错误时候显示的图片 .cacheInMemory(true)//设置下载的图片是否缓存在内存中 .cacheOnDisk(true)//设置下载的图片是否缓存在SD卡中 .imageScaleType(ImageScaleType.IN_SAMPLE_INT)//设置图片以如何的编码方式显示 .bitmapConfig(Bitmap.Config.RGB_565)//设置图片的解码类型 .build();//构建完成 imageLoader.displayImage(url, imageView, options); //.displayer(new RoundedBitmapDisplayer(90)) 构建圆形图片 } }//适配器 (主要)
package com.example.administrator.listview_type; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import java.util.List; /** * Created by Administrator on 2017/7/24. */ public class MyAdapter extends BaseAdapter { private List<String> list; private Context context; //设置常量 private static final int Type_0= 0; private static final int Type_1= 1; private static final int Type_2= 2; private static final int Type_3= 3; private static final int Type_4= 4; private static final int Type_5= 5; public MyAdapter(List<String> list, Context context) { this.list = list; this.context = context; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int i) { return null; } @Override public long getItemId(int i) { return 0; } @Override public View getView(int i, View view, ViewGroup viewGroup) { ViewHolder holder; int type = getItemViewType(i); if(view==null){ //填充 holder=new ViewHolder(); switch(type){ case Type_0: view=view.inflate(context,R.layout.item1,null); holder.textView= (TextView) view.findViewById(R.id.tv1); break; case Type_1: view=view.inflate(context,R.layout.item2,null); holder.textView= (TextView) view.findViewById(R.id.tv2); break; case Type_2: view=view.inflate(context,R.layout.item3,null); holder.textView= (TextView) view.findViewById(R.id.tv3); break; case Type_3: view=view.inflate(context,R.layout.item4,null); holder.imageView= (ImageView) view.findViewById(R.id.image4); break; case Type_4: view=view.inflate(context,R.layout.item5,null); holder.imageView= (ImageView) view.findViewById(R.id.image5); break; case Type_5: view=view.inflate(context,R.layout.item6,null); holder.imageView= (ImageView) view.findViewById(R.id.image6); break; default: break; } view.setTag(holder); }else{ holder= (ViewHolder) view.getTag(); //设置数据 switch(type){ case Type_0: holder.textView.setText(list.get(i)); break; case Type_1: holder.textView.setText(list.get(i)); break; case Type_2: holder.textView.setText(list.get(i)); break; case Type_3: ImageLoaderUtils.setImageView(list.get(i),context,holder.imageView); break; case Type_4: ImageLoaderUtils.setImageView(list.get(i),context,holder.imageView); break; case Type_5: ImageLoaderUtils.setImageView(list.get(i),context,holder.imageView); break; default: break; } } return view; } @Override public int getViewTypeCount() { return 6; } //判断 @Override public int getItemViewType(int position) { int type=position%6; if(type==0){ return Type_0; }else if(type==1){ return Type_1; }else if(type==2){ return Type_2; }else if(type==3){ return Type_3; }else if(type==4){ return Type_4; }else if(type==5){ return Type_5; } return type; } static class ViewHolder{ TextView textView; ImageView imageView; } }