Вы можете использовать API для StickyListHeaders, как вы хотите, а не использовать символ. Я взял этот пример и изменил несколько элементов StickyListHeaders # Getting-Start , обозначенных моими комментариями "//*** NOTE:
" Просто нужно узнать, что вы можете изменять реализации так, как вам хочется в Java, если предоставляется API. Просто экспериментирует. Ничто в этом API не заставляет вас использовать их метод или метод char. Я предполагаю, что это всего лишь встроенный API.
@Override
public View getHeaderView(int position, View convertView, ViewGroup parent) {
HeaderViewHolder holder;
if (convertView == null) {
holder = new HeaderViewHolder();
convertView = inflater.inflate(R.layout.header, parent, false);
holder.text = (TextView) convertView.findViewById(R.id.text);
convertView.setTag(holder);
} else {
holder = (HeaderViewHolder) convertView.getTag();
}
//*** NOTE: You can use the name here
//set header text as first char in name
String headerText = "" + countries[position].subSequence(0, 1).charAt(0);
holder.text.setText(headerText);
return convertView;
}
@Override
public long getHeaderId(int position) {
//*** NOTE: You could use the hashcode of the word here or your own implementation
//return the first character of the country as ID because this is what headers are based upon
return countries[position].subSequence(0, 1).charAt(0);
}