@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; }
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); }
/** * 根据输入框中的值来过滤数据并更新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); }