gpt4 book ai didi

android sectionindexer教程?

转载 作者:太空狗 更新时间:2023-10-29 16:09:21 25 4
gpt4 key购买 nike

如何为带有字符串数组的 ListView 创建分类部分索引器?我看过字母索引器的例子,但它是如何为类别实现的,例如第 1 节、第 2 节、第 3 节……?

最佳答案

根据您的需要将其自定义为适配器并设置为您的 ListView ,仅此而已,取自 here

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

在您的 ListView 中

 ContactsAdapter contactsAdapter = new ContactsAdapter(Registration.this, YOUR_Array;

listview.setAdapter(contactsAdapter);

listview.setFastScrollEnabled(true);

关于android sectionindexer教程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6883785/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com