使用字母部分创建列表视图?

时间:2014-07-01 18:22:55

标签: android listview

我目前有:

@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;
}

我想复制人们应用程序与此类似的内容: screenshot

现在,按this判断。

我可以有一个专门用于该部分的自定义视图,但我不太清楚如何判断一个位置是否是一个部分,如果一个部分是空的,也会如何它被省略了?

1 个答案:

答案 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

https://github.com/emilsjolander/StickyListHeaders