Example #1
0
  @Override
  public View getView(final int position, View view, ViewGroup arg2) {
    ViewHolder viewHolder = null;
    final ContactSortModel item = (ContactSortModel) getItem(position);
    if (view == null) {
      viewHolder = new ViewHolder();
      view = LayoutInflater.from(mContext).inflate(R.layout.contact_item, null);
      viewHolder.tvTitle = (TextView) view.findViewById(R.id.title);
      viewHolder.tvLetter = (TextView) view.findViewById(R.id.catalog);
      view.setTag(viewHolder);
    } else {
      viewHolder = (ViewHolder) view.getTag();
    }

    // 根据position获取分类的首字母的Char ascii值
    int section = getSectionForPosition(position);

    // 如果当前位置等于该分类首字母的Char的位置 ,则认为是第一次出现
    if ("添加好友".equals(item.getRoster().getAlias()) || "新朋友".equals(item.getRoster().getAlias())) {
      viewHolder.tvLetter.setVisibility(View.GONE);
    } else if (position == getPositionForSection(section)) {
      viewHolder.tvLetter.setVisibility(View.VISIBLE);
      viewHolder.tvLetter.setText(item.getSortLetters());

    } else {
      viewHolder.tvLetter.setVisibility(View.GONE);
    }

    viewHolder.tvTitle.setText(item.getRoster().getAlias());

    ImageView image = (ImageView) view.findViewById(R.id.iv_icon); // 获得ImageView对象
    viewHolder.tvImage = image;
    if ("添加好友".equals(item.getRoster().getAlias())) {
      viewHolder.tvImage.setBackgroundResource(R.drawable.contact_add_friends);
    } else if ("新朋友".equals(item.getRoster().getAlias())) {
      viewHolder.tvImage.setBackgroundResource(R.drawable.contact_new_friends);
    } else {
      viewHolder.tvImage.setBackgroundResource(R.drawable.default_mobile_avatar);

      File file = new File("mnt/sdcard/Wanglai/Avatar/" + item.getRoster().getJid() + ".png");
      if (file.exists()) {
        Bitmap bitmap =
            getLoacalBitmap(
                "mnt/sdcard/Wanglai/Avatar/" + item.getRoster().getJid() + ".png"); // 从本地取图片vcard
        // 设置Bitmap
        image.setImageBitmap(bitmap);
        // 设置Imageview
        image.setAdjustViewBounds(true);
        image.setMaxHeight(60);
        image.setMaxWidth(60);
        viewHolder.tvImage = image;
        viewHolder.tvImage.setBackgroundResource(0);
      }
    }

    return view;
  }
Example #2
0
  private List<ContactSortModel> queryData(String groupname) {
    // mSortList = new ArrayList<SortModel>();
    if (mContactList == null) {
      mContactList = new ArrayList<ContactSortModel>();
    } else {
      mContactList.clear();
    }

    List<Roster> rosters = getRosters(groupname);

    if (mIsContact) {
      ContactSortModel sm1 = new ContactSortModel();
      Roster roster = new Roster();
      roster.setAlias("添加好友");
      sm1.setRoster(roster);
      sm1.setSortLetters("@");
      mContactList.add(sm1);

      ContactSortModel sm2 = new ContactSortModel();
      Roster roster2 = new Roster();
      roster2.setAlias("新朋友");
      sm2.setRoster(roster2);
      sm2.setSortLetters("@");
      mContactList.add(sm2);
    }

    for (int i = 0; i < rosters.size(); i++) {
      ContactSortModel sortModel = new ContactSortModel();

      sortModel.setRoster(rosters.get(i));
      // 取roster的alias昵称,并将汉字转换成拼音
      String pinyin = mCharacterParser.getSelling(rosters.get(i).getAlias());
      String sortString = pinyin.substring(0, 1).toUpperCase();

      // 正则表达式,判断首字母是否是英文字母
      if (sortString.matches("[A-Z]")) {
        sortModel.setSortLetters(sortString.toUpperCase());
      } else {
        sortModel.setSortLetters("#");
      }

      mContactList.add(sortModel);
    }

    return filterData(mFilterString, mContactList);
  }
Example #3
0
  /**
   * 根据输入框中的值来过滤数据并更新ListView
   *
   * @param filterStr
   */
  private List<ContactSortModel> filterData(String filterStr, List<ContactSortModel> contactList) {
    List<ContactSortModel> filterContactList = new ArrayList<ContactSortModel>();

    if (TextUtils.isEmpty(filterStr)) {
      filterContactList = contactList;
    } else {
      filterContactList.clear();
      for (ContactSortModel sortModel : contactList) {
        String alias = sortModel.getRoster().getAlias();
        if (alias.indexOf(filterStr.toString()) != -1
            || mCharacterParser.getSelling(alias).startsWith(filterStr.toString())) {
          filterContactList.add(sortModel);
        }
      }
    }

    // 根据a-z进行排序
    Collections.sort(filterContactList, new PinyinComparator());
    return filterContactList;
    // this.updateListView(filterDateList);
  }