myown email Ответов: 0

Получить счетчик списков, а затем обновить заголовок в listview


У меня есть 2 xml файла

`Заголовок` и `раздел`

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


|8/2/2018|
    ----------
     Data 1
     Data 2
    |8/2/2018|
    ----------
     Data 1
     Data 2
     Data 3


Это listview, который группирует данные с одной и той же датой и заголовком 1 date для них.
Мой вопрос заключается в том, как я могу подсчитать все данные, а затем обновить заголовок? подобный этому

|8/2/2018 (2)|
    ----------
     Data 1
     Data 2
    |8/2/2018 (3)|
    ----------
     Data 1
     Data 2
     Data 3


Я использую `Listview` и `ListAdapter расширяет ArrayAdapter`

где я буду обновляться?

здесь

public View getView(int position, View convertView, ViewGroup parent) {
                View v = convertView;
                ItemModel cell = (ItemModel) getItem(position);
    
       if (cell.isSectionHeader()) {
       		//Display Date in Header XML
       } else {
       		//Display in Section XML
       }
    }


или здесь


private ArrayList sortAndAddSections(ArrayList<ItemModel> itemList) {
    
            ArrayList<ItemModel> tempList = new ArrayList<>();
            Collections.sort(itemList);
    
            String header = "";
            for (int i = 0; i < itemList.size(); i++) {
                if (!(header.equals(itemList.get(i).getDate()))) {
                    String data = itemList.get(i).getRemarks();
                    String date = itemList.get(i).getDate()
                    ItemModel sectionCell = new ItemModel(date,data);
                    sectionCell.setToSectionHeader();
                    tempList.add(sectionCell);
                    header = itemList.get(i).getDate();
                }
    
                tempList.add(itemList.get(i));
            }
            return tempList;
        }

Обновленный

Вот как я переношу данные из базы данных в массив

private ArrayList<ItemModel> getItems() {
            Cursor data = myDb.get_plan(email);
            ArrayList<ItemModel> items = new ArrayList<>();
            while (data.moveToNext()) {
                String date = data.getString(3);
                String data1 = data.getString(4);
                items.add(new ItemModel(date,data1));
            }
            return items;
        }


тогда вот куда идет условие

private ArrayList sortAndAddSections(ArrayList<ItemModel> itemList) {
    
            ArrayList<ItemModel> tempList = new ArrayList<>();
    
            String header = "";
            for (int i = 0; i < itemList.size(); i++) {
                if (!(header.equals(itemList.get(i).getDate()))) {
                    String date = itemList.get(i).getDate();
                    String getData1 = itemList.get(i).getData1();
                    ItemModel sectionCell = new ItemModel(date,data1);
                    sectionCell.setToSectionHeader();
                    tempList.add(sectionCell);
                    header = itemList.get(i).getDate();
                }
                tempList.add(itemList.get(i));
            }
            return tempList;
        }



вот где я установил его в textview

@Override
            public View getView(int position, View convertView, ViewGroup parent) {
                View v = convertView;
                ItemModel cell = (ItemModel) getItem(position);
    
                if (cell.isSectionHeader()) {
                    v = inflater.inflate(R.layout.section_header, null);
                    v.setClickable(false);
                    TextView header = (TextView) v.findViewById(R.id.list_date);
                    header.setText(cell.getDate());
                } else {
                    v = inflater.inflate(R.layout.listview_plan, null);
                    TextView tv_data1 = v.findViewById(R.id.list_data1);
                    tv_cusname.setText(cell.getData1());
                }
    
                return v;
            }


Что я уже пробовал:

Попробуйте погуглить некоторые коды и применить его, но ничего не работает

Richard MacCutchan

Вам нужно получить количество записей, прежде чем вставлять заголовок раздела.

0 Ответов