最近新学习了XListView的多条目展示,感觉还好用,但是怕忘记所以写到这里,初学者也可以参考一下
话不多说,直接上重要代码:
依赖:
compile project(':xlistviewlibrary')
//适配器
package wangyikai.bawei.com.mymonth01; import android.content.Context; import android.provider.Settings; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; public class MyBaseAdapter extends BaseAdapter { private Bean mBean; private Context mContext; public final int News_One=0; public final int News_Two=1; public final int News_Three=2; public MyBaseAdapter(Context context, Bean bean) { mContext = context; mBean = bean; } //获取条目布局类别的个数 @Override public int getViewTypeCount() { return 3; } //获取条目布局 @Override public int getItemViewType(int position) { if (mBean.getData().get(position).getImage_list().size()==0){ return News_One; }else if (mBean.getData().get(position).getImage_list().size()==1){ return News_Two; }else { return News_Three; } } @Override public int getCount() { return mBean.get; } @Override public Object getItem(int position) { return mBean.getData().get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder v1=null; NoViewHolder v2=null; ThreeViewHolder v3=null; int type = getItemViewType(position); if (convertView==null){ switch (type){ case News_One: convertView=View.inflate(mContext,R.layout.onepic,null); v1=new ViewHolder(); v1.title= (TextView) convertView.findViewById(R.id.one_title); v1.score= (TextView) convertView.findViewById(R.id.one_score); convertView.setTag(v1); break; case News_Two: convertView=View.inflate(mContext,R.layout.nopic,null); v2=new NoViewHolder(); v2.title= (TextView) convertView.findViewById(R.id.no_title); v2.score= (TextView) convertView.findViewById(R.id.no_score); convertView.setTag(v2); break; case News_Three: convertView=View.inflate(mContext,R.layout.threepic,null); v3=new ThreeViewHolder(); v3.title= (TextView) convertView.findViewById(R.id.three_title); v3.score= (TextView) convertView.findViewById(R.id.three_score); v3.mImageView1= (ImageView) convertView.findViewById(R.id.three_iv_one); v3.mImageView2= (ImageView) convertView.findViewById(R.id.three_iv_two); v3.mImageView3= (ImageView) convertView.findViewById(R.id.three_iv_three); convertView.setTag(v3); } }else { switch (type){ case News_One: v1= (ViewHolder) convertView.getTag(); break; case News_Two: v2= (NoViewHolder) convertView.getTag(); break; case News_Three: v3= (ThreeViewHolder) convertView.getTag(); break; } } switch (type){ case News_One: v1.title.setText(mBean.getData().get(position).getTitle()); v1.score.setText(mBean.getData().get(position).getSource()); DisplayImageOptions options=new DisplayImageOptions.Builder().cacheOnDisk(true).cacheInMemory(true).build(); ImageLoader.getInstance().displayImage(mBean.getData().get(position).getImage_list().get(0).getUrl_list().get(0).getUrl(),v1.mImageView,options); break; case News_Two: v2.title.setText(mBean.getData().get(position).getTitle()); v2.score.setText(mBean.getData().get(position).getSource()); break; case News_Three: v3.title.setText(mBean.getData().get(position).getTitle()); v3.score.setText(mBean.getData().get(position).getSource()); DisplayImageOptions options1=new DisplayImageOptions.Builder().cacheOnDisk(true).cacheInMemory(true).build(); ImageLoader.getInstance().displayImage(mBean.getData().get(position).getImage_list().get(0).getUrl_list().get(0).getUrl(),v3.mImageView1,options1); ImageLoader.getInstance().displayImage(mBean.getData().get(position).getImage_list().get(0).getUrl_list().get(1).getUrl(),v3.mImageView2,options1); ImageLoader.getInstance().displayImage(mBean.getData().get(position).getImage_list().get(0).getUrl_list().get(2).getUrl(),v3.mImageView3,options1); break; } return convertView; } class ViewHolder { TextView title, score; ImageView mImageView; } class NoViewHolder { TextView title, score; } class ThreeViewHolder { TextView title, score; ImageView mImageView1, mImageView2, mImageView3; } } 因Demo需要的效果是实现三个不同的条目,所以我创建了三个不同的视图,可以根据自己的项目需求去改进