ListView概念:
在android开发中ListView是比较常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示。
ListView展示数据的原理
在Android中,其实ListView就相当于web中的jsp,Adapter是适配器,它就相当于web中的Servlet,
适配器的作用Adapter的作用就是把数据展示在Listview中
一、 ListView多条目加载
在现实的项目开发中,listView往往会加载不同类型的数据,这就要求我们要对listView进行多条目的加载,对数据类型进行判断,怎么判断呢?主要在适配器里面进行类型的判断。
代码如下:在listView适配器重写的四个方法的基础上,再手动重写两个方法,分别是:getViewTypeCount(),getItemViewType(int position),这两个方法,第一个是确定加载条木有几种数据类型,第二个是对数据进行判断和分类的。
//适配器
private class MyAdapter extends BaseAdapter{
@Override
public int getCount() {
return biglist.size();
}
@Override
public Object getItem(int position) {
return biglist.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
//共有多少种条目的类型
@Override
public int getViewTypeCount() {
return 2;
}
//条目视图的类型
@Override
public int getItemViewType(int position) {
return position%2;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
int itemViewType = getItemViewType(position);
switch (itemViewType){
case 0:
ViewHolder_01 holder_01;
if(convertView==null){
convertView=View.inflate(getActivity(),R.layout.list_01,null);
holder_01=new ViewHolder_01();
holder_01.name_00=(TextView)convertView.findViewById(R.id.name_00);
holder_01.img=(ImageView)convertView.findViewById(R.id.img);
convertView.setTag(holder_01);
}else{
holder_01= (ViewHolder_01) convertView.getTag();
}
holder_01.name_00.setText(biglist.get(position).getNews_title());
DisplayImageOptions build = new DisplayImageOptions.Builder()
.displayer(new RoundedBitmapDisplayer(20))//圆角
.cacheInMemory(true)//设置下载的图片是否缓存在内存中
.cacheOnDisk(true)
.build();
instance.displayImage(biglist.get(position).getPic_url(),holder_01.img,build);
break;
case 1:
ViewHolder_02 holder_02;
if(convertView==null){
convertView=View.inflate(getActivity(),R.layout.list_02,null);
holder_02=new ViewHolder_02();
holder_02.name_01=(TextView)convertView.findViewById(R.id.name_01);
holder_02.name_02=(TextView)convertView.findViewById(R.id.name_02);
convertView.setTag(holder_02);
}else{
holder_02= (ViewHolder_02) convertView.getTag();
}
holder_02.name_01.setText(biglist.get(position).getNews_title());
holder_02.name_02.setText(biglist.get(position).getNews_summary());
break;
}
return convertView;
}
class ViewHolder_01{
private TextView name_00;
private ImageView img;
}
class ViewHolder_02{
private TextView name_01;
private TextView name_02;
}
}