Android: как добавить нижний колонтитул раздела в список

Я использую SeperatedListAdapter, доступный здесь: http://jsharkey.org/blog/2008/08/18/separating-lists-with-headers-in-android-09/

но я хочу создать список с нижним колонтитулом для каждого раздела. я не знаю, как мне это сделать. любое другое решение для создания списка разделов с нижним колонтитулом для каждого раздела будет полезным.

отредактировано:

теперь я меняю адаптер, как показано ниже:

footers = new ArrayAdapter<String>(context, R.layout.footer_layout);
    public int getCount() {  
        // total together all sections, plus one for each section header  
        int total = 0;  
        for(Adapter adapter : this.sections.values())  
            total += adapter.getCount() + 2;  
        return total;  
    }  


//@Override  
public View getView(int position, View convertView, ViewGroup parent) {  
    int sectionnum = 0;  
    for(Object section : this.sections.keySet()) {  
        Adapter adapter = sections.get(section);  
        int size = adapter.getCount() + 2;  

        // check if position inside this section  
        if(position == 0) return headers.getView(sectionnum, convertView, parent);  
        if(position < size-1) return adapter.getView(position - 1, convertView, parent);
        if(position == size -1)  return headers.getView(sectionnum, convertView, parent); 

        // otherwise jump into next section  
        position -= size;  
        sectionnum++;  
    }  
    return null;  
}  

но я получаю исключение индекса


person shohreh    schedule 05.02.2012    source источник


Ответы (1)


Вы можете просто создать новый макет, который возвращается в getView (в вашем адаптере) как последняя позиция в каждом разделе. (вместо первого в каждом разделе)

Я считаю, что это похоже на решение, которое использует SeperatedListAdapter.

person oscar    schedule 05.02.2012
comment
привет Оскар. Спасибо за ваш ответ. но не могли бы вы объяснить это подробнее. Я новичок в андроиде... - person shohreh; 05.02.2012
comment
Что ты хочешь? И разделы, и нижние колонтитулы? - person oscar; 05.02.2012
comment
простое решение работает так. - В свой ListView добавьте свой адаптер (класс, который расширяет BaseAdapter) - Адаптер должен содержать данные о структуре данных, возможно список разделов, с их данными. - в getCount адаптера вернуть количество элементов в списке (например, если у вас есть 3 раздела по 2 элемента в каждом и раздел и нижний колонтитул, вы должны вернуть 3 * (2 элемента + 1 заголовок + 1 нижний колонтитул) = 12 .- в getView адаптера выяснить, что вы должны вернуть, элемент, заголовок или нижний колонтитул. - person oscar; 05.02.2012
comment
большое спасибо. но все же у меня есть проблема. я сделал все, что вы сказали. но у меня проблема, когда я хочу вернуть вид нижнего колонтитула в функции getView. когда программа выполняется, она получает индекс Exception. возможно, это из-за этой строки :(if(position == size -1) return footers.getView(sectionnum, convertView, parent);). но когда я использую заголовки вместо нижних колонтитулов в приведенном выше заявлении, он отлично работает - person shohreh; 05.02.2012
comment
я исправил проблему. это было только потому, что я забыл инициализировать нижний колонтитул. спасибо Оскар :) - person shohreh; 05.02.2012
comment
Без проблем! Я считаю, что это сложнее, чем должно быть ... но если это сработает :) Кстати, отметьте это как решенное - person oscar; 05.02.2012