липкий или закрепленный разделенный список в Android с динамическими данными - PullRequest
0 голосов
/ 28 марта 2019

Я хочу достичь чего-то вроде этого . Я получаю "названия опросов" (тип: строка) и "разное количество вопросов" (тип: строка) под заголовками каждого опроса. Я хочу использовать заголовки опроса в качестве заголовков и вопросы этого опроса должны отображаться под заголовком этого опроса .

Я уже пробовал https://github.com/emilsjolander/StickyListHeaders; и несколько других библиотек. Он использует первый символ списка данных в качестве заголовка. Что в моем случае невозможно.

Этот будет заголовком внешнего вида и его вопросами. Когда есть несколько опросов с их вопросами, поведение Sticky или закрепленного заголовка, которое я хочу достичь в моем приложении для Android.

1 Ответ

0 голосов
/ 28 марта 2019

Вы можете использовать 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);
    }
...