如何为带有字符串数组的列表视图创建分类部分索引器?我已经看到了字母索引器的示例,但是它是如何为类别实现的,例如第 1 节、第 2 节、第 3 节……?
问问题
8307 次
2 回答
4
根据您的需要将其自定义为适配器并设置为您的列表视图,仅此而已,取自此处
public class ContactsAdapter extends BaseAdapter implements SectionIndexer {
Context context;
String[] strings;
String[] sections ;
HashMap<String, Integer> alphaIndexer;
public ContactsAdapter(Context context, String[] strings) {
this.context = context;
this.strings = strings;
alphaIndexer = new HashMap<String, Integer>();
int size = strings.length;
for (int x = 0; x < size; x++) {
String s = strings[x];
String ch = s.substring(0, 1);
ch = ch.toUpperCase();
if (!alphaIndexer.containsKey(ch))
alphaIndexer.put(ch, x);
}
Set<String> sectionLetters = alphaIndexer.keySet();
ArrayList<String> sectionList = new ArrayList<>(sectionLetters);
Collections.sort(sectionList);
sections = new String[sectionList.size()];
sectionList.toArray(sections);
}
@Override
public int getCount() {
return strings.length;
}
@Override
public Object getItem(int position) {
return strings[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.main, parent, false);
holder = new ViewHolder();
holder.text = (TextView) convertView.findViewById(R.id.tv_contact);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.text.setText(strings[position]);
return convertView;
}
@Override
public Object[] getSections() {
return sections;
}
@Override
public int getPositionForSection(int sectionIndex) {
return alphaIndexer.get(sections[sectionIndex]);
}
@Override
public int getSectionForPosition(int position) {
return 0;
}
static class ViewHolder {
TextView text;
}
}
在您的列表视图中
ContactsAdapter contactsAdapter = new ContactsAdapter(Registration.this, YOUR_Array;
listview.setAdapter(contactsAdapter);
listview.setFastScrollEnabled(true);
于 2015-08-13T11:52:31.517 回答
3
这里有很多答案:
- 在 ListView 中创建类别?
- 带有由 LoaderManager 管理的自定义适配器的 AlphabetIndexer
- http://tribulant.com/forums/topic/how-do-i-get-a-list-view-of-categories-with-image-thumbnail-and-description
感谢大家的推荐
于 2012-08-08T11:52:04.320 回答