我在这里关注一个很棒的编码示例:这个 SO question。它是关于实现一个 SectionIndexer 接口到一个数组适配器。
但是,如果您的 ArrayAdapter 传递的是 ArrayList< MyObject > 而不是 ArrayList< String >,您将如何做同样的事情?
例如,这是我的代码与他的代码不同的地方。他有:
class AlphabeticalAdapter extends ArrayAdapter<String> implements SectionIndexer {
private HashMap<String, Integer> alphaIndexer;
private String[] sections;
public AlphabeticalAdapter(Context c, int resource, List<String> data) {
alphaIndexer = new HashMap<String, Integer>();
for (int i = 0; i < data.size(); i++) {
String s = data.get(i).substring(0, 1).toUpperCase();
alphaIndexer.put(s, i);
}
// other stuff
}
我在使 for 循环适应我的情况时遇到问题。我不能像他那样测量尺寸。在他有上述内容的地方,我的适配器开始了。
public class CustomAdapter extends ArrayAdapter<Items> implements
SectionIndexer {
public ItemAdapter(Context context, Items[] objects) {
在他传递一个 ArrayList 的地方,我必须传递三个,但要做到这一点,必须包装在一个自定义对象类中。我要排序的 ArrayList 之一是名为“name”的类中的三个字段之一。这显然是一个字符串。
我想使用基于该名称字段的 SectionIndex 按字母顺序滚动浏览该名称。如何更改其他问题中的示例代码以在这种情况下工作?
他有“data.size()”的地方,我需要像“name.size()”这样的东西——我想?