您的位置:首页 > 编程语言

一个简单的listview多条目加载代码

2017-10-15 19:08 363 查看
public class MyAdapter extends BaseAdapter{

private List list;

private Context context;

//定义两种类型 int类型,注意: 定义的数字 不能大于等于 getViewTypeCount 返回的数字
private  final int TYPE_MEN=0;
private  final int TYPE_WOMEN=1;

public MyAdapter(List<Person> list, Context context) {
this.list = list;
this.context = context;
}

@Override
public int getCount() {
return list.size();
}

@Override
public Object getItem(int position) {
return list.get(position);
}

@Override
public long getItemId(int position) {
return position;
}

//得到视图类型的总数
@Override
public int getViewTypeCount() {
return 2;
}

//根据position 当前条目 ,去获取要显示的视图类型,返回值 int
@Override
public int getItemViewType(int position) {
//根据数据内容去判断得到显示的类型
if(list.get(position).getSex().equals("男")){
return  TYPE_MEN;
}else if(list.get(position).getSex().equals("女")){
return TYPE_WOMEN;
}else{
return TYPE_WOMEN;
}

}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

//首先要根据position得到显示的类型
int type=getItemViewType(position);
switch (type){
case TYPE_MEN:
ViewHolderMan holderMan;
if(convertView==null){
convertView=View.inflate(context,R.layout.fale_item,null);
holderMan=new ViewHolderMan();

holderMan.tvName=(TextView) convertView.findViewById(R.id.tv_name);
holderMan.tvSex=(TextView) convertView.findViewById(R.id.tv_sex);

convertView.setTag(holderMan);

}else{
holderMan=(ViewHolderMan) convertView.getTag();
}

holderMan.tvName.setText(list.get(position).getName());
holderMan.tvSex.setText(list.get(position).getSex());
return  convertView;

case TYPE_WOMEN:

ViewHolderWomen holderWomenMan;
if(convertView==null){
convertView=View.inflate(context,R.layout.women_item,null);
holderWomenMan=new ViewHolderWomen();

holderWomenMan.tvName=(TextView) convertView.findViewById(R.id.tv_name);
holderWomenMan.tvSex=(TextView) convertView.findViewById(R.id.tv_sex);

convertView.setTag(holderWomenMan);

}else{
holderWomenMan=(ViewHolderWomen) convertView.getTag();
}

holderWomenMan.tvName.setText(list.get(position).getName());
holderWomenMan.tvSex.setText(list.get(position).getSex());

return  convertView;

}

return  null;

}

class ViewHolderMan{
TextView tvName;
TextView tvSex;
}

class ViewHolderWomen{
TextView tvName;
TextView tvSex;
}


}

///////////////////////////////////////////////////////////////////

public class MainActivity extends AppCompatActivity {

private ListView listView;

private List datas=new ArrayList();

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

listView= (ListView) findViewById(R.id.lv);

initData();

listView.setAdapter(new MyAdapter(datas,this));

}

private void initData() {
for(int i=0;i<20;i++){
Person p=new Person();
p.setName("小明"+i);
p.setSex(i%2==0?"男":"女");
datas.add(p);
}
}


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: