BaseAdapter
编写自定义适配类,然后拓展BaseAdapter
具体继承方法
单一布局
int getCount() 总数量
Object getItem 根据position得到某一行
long getItemId 得到某一行的Id
View getView 为界面填充数据,返回视图,主要写一些参数的得到,和赋值 多布局,需要加入,先定义final 变量int getItemViewType 得到布局的类型typeint getViewTypeCount() 得到布局的总数 案列: 多布局新闻页面BaseAdapterlv= (ListView) findViewById(R.id.lv); List<News2> list=new ArrayList(); News2 nw =new News2("新闻1","今天",R.mipmap.f1,0,0,0,"通讯"); list.add(nw); nw =new News2("新闻1","今天",R.mipmap.f1,0,0,0,"通讯"); list.add(nw); nw =new News2("新闻1","今天",R.mipmap.f1,R.mipmap.f1,R.mipmap.f1,0,"通讯"); list.add(nw); lv.setAdapter(new BaseMultAdapter(list,this)); }private List<News2> myData; private Context context; private final int TYPE1=0; private final int TYPE2=1; public BaseMultAdapter(List<News2> myData, Context context) { this.myData = myData; this.context = context; } @Override public int getCount() { return myData.size(); } @Override public Object getItem(int position) { return myData.get(position); } @Override public long getItemId(int position) { return 0; } @Override public int getItemViewType(int position) { if (myData.get(position).getImg1()==0){ return TYPE1; }else{ return TYPE2; } } @Override public int getViewTypeCount() { return 2; } @Override public View getView(int position, View convertView, ViewGroup parent) { final ViewHold vh; int type=getItemViewType(position); if (convertView==null){ vh=new ViewHold(); if (type==0){ convertView= LayoutInflater.from(context).inflate(R.layout.listview_layout3,null); vh.title= (TextView) convertView.findViewById(R.id.tv1); vh.from= (TextView) convertView.findViewById(R.id.tv3); vh.from= (TextView) convertView.findViewById(R.id.tv3); vh.pubData= (TextView) convertView.findViewById(R.id.tv5); vh.img= (ImageView) convertView.findViewById(R.id.iv); convertView.setTag(vh); }else if(type==1){ convertView=LayoutInflater.from(context).inflate(R.layout.listview_layout4,null); vh.img1= (ImageView) convertView.findViewById(R.id.iv1); vh.img2= (ImageView) convertView.findViewById(R.id.iv2); vh.img3= (ImageView) convertView.findViewById(R.id.iv3); convertView.setTag(vh); } }else{ vh= (ViewHold) convertView.getTag(); } if (type==0){ vh.img.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(context, "点击了图片", Toast.LENGTH_SHORT).show(); } }); } News2 news2=myData.get(position); if (type==0){ vh.title.setText(news2.getTitle()); vh.pubData.setText(news2.getPubData()); vh.from.setText(news2.getFrom()); vh.img.setImageResource(news2.getImg()); }else if (type==1){ vh.img1.setImageResource(news2.getImg1()); vh.img2.setImageResource(news2.getImg2()); vh.img3.setImageResource(news2.getImg3()); } return convertView; } public class ViewHold{ //布局1使用的控件 TextView title; TextView pubData; TextView from; ImageView img; //布局2 使用的控件 ImageView img1; ImageView img2; ImageView img3; } }需要扩充新闻类