我目前有:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = mInflater.inflate(R.layout.grid_contact_item, null);
}
BaseContact contact = this.getItem(position);
TextView text = (TextView) convertView.findViewById(R.id.contact_name);
if (contact.getName() != null && !contact.getName().equals("")) {
text.setText(contact.getName());
}
ImageView contactIcon = (ImageView) convertView.findViewById(R.id.contact_image);
if ((contact.getPhotoURI() != null && !contact.getPhotoURI().toString().equals(""))) {
Picasso.with(this.ctx).load(contact.getPhotoURI()).transform(new CircleTransform()).into(
contactIcon);
} else if ((contact.getPhotoURI() == null || contact.getPhotoURI().toString().equals(""))
&& (contact.getPhotoThumbURI() != null && !contact.getPhotoThumbURI().toString()
.equals(
""))) {
Picasso.with(this.ctx).load(contact.getPhotoThumbURI()).transform(new CircleTransform()).into(
contactIcon);
} else {
Picasso.with(this.ctx).load(R.drawable.contact_no_picture).transform(new CircleTransform()).into(
contactIcon);
}
return convertView;
}
我想复制人们应用程序与此类似的内容:
现在,按this判断。
我可以有一个专门用于该部分的自定义视图,但我不太清楚如何判断一个位置是否是一个部分,如果一个部分是空的,也会如何它被省略了?
答案 0 :(得分:1)
关于多行:
您必须覆盖适配器的两种方法:
@Override
public int getItemViewType(int position) {
//your logic. as example:
return getItem(position).getTitle()==null?0:1
}
@Override
public int getViewTypeCount() {
return 2;
}
然后在你的getView()中:
public View getView(etc...){
if(convertView == null){
switch(getItemViewType(position)){
//ugly things happen here…
case 0: //create view 0 + viewHolder0 and other stuff
break;
case 1: //create view 1 + viewHolder1 and other stuff
break;
....
return covertView;
}
如果您不想编写自定义适配器,请使用StickyListHeaders