Задать вопрос
@Romanson

Как выполнить построение списка с txt файла в ListView AndroidStudio?

Доброго дня уважаемые! У меня такой вопрос, я не силен в AndroidStudio, недавно только начал пересматривать уроки и читать мануалы по разработке приложений до этого все создавал в Delphi Fmx, но из за (Дерьмоватости платформы fmx) плохой реализации сложно добиться того что реально возможно в AndroidStudio.
Есть приложение написанное на Delphi это телефонный справочник - база в txt файле и выглядит так:
=Заголовок раздела
*Запись 1: Телефон
*Запись 2: Телефон
*и т.д. - в делфи приложение грузит список, находит все строки начинающиеся с "=" и составляет список категорий в listview1 и, аналогичным образом по нажатию в списке listview на выведенную строку ищет все записи "*" от "=выбранного элемента до следующего =" т.е. все строки c * что между = и = . Все легко и просто. Так вот как такое реализовать в AndroidStudio или ткните носом в подобное что бы я разобраться мог в поисках по базе и выводу строк. Что читать и куда копать. Всем заранее благодарен, буду рад в помощи поддержки проекта)
  • Вопрос задан
  • 280 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
Rou1997
@Rou1997
Если бы файл без разделов, то вам нужно просто построчно в цикле считать все строки в ArrayList<String>, здесь Android ни причем, это просто Java (если не считать особенностей пути к SD-карте и необходимой permission), а затем этот ArrayList<String> нужно привязать к ListView с помощью ArrayAdapter, такой пример по ListView и по другим темам есть у Александра Климова на сайте, да и не только у него.
Но для поддержки разделов потребуется ListView заменить на ExpandableListView, и здесь модель данных получается гораздо запутаннее, тем не менее вот вам пример именно с Expandable, но еще раз, на Android все довольно запутанно и сложно, совсем не тот уровень что в Delphi, инвалидам без рук и головы - которых в Delphi каждый второй - тут не место, думаю вы это поймете, увидев этот код:
//код пишите в onCreate
    	expandableListView1 = (ExpandableListView)
    			findViewById(R.id.expandableListView1);
    	
        String groupFrom[] = new String[] { "groupName" };
        int groupTo[] = new int[] { android.R.id.text1 };
        String childFrom[] = new String[] { "monthName" };
        int childTo[] = new int[] { android.R.id.text1 };

        List<Map<String, String>> groupDataList
        	= new ArrayList<Map<String, String>>();
        HashMap<String, String> map1 = new HashMap<String, String>();
        map1.put("groupName", "Group 1");
        groupDataList.add(map1);
        HashMap<String, String> map2 = new HashMap<String, String>();
        map2.put("groupName", "Group 2");
        groupDataList.add(map2);

        List<ArrayList<Map<String, String>>> сhildDataList
        	= new ArrayList<ArrayList<Map<String, String>>>();
        ArrayList<Map<String, String>> сhildDataItemList1
        	= new ArrayList<Map<String, String>>();
        HashMap<String, String> map3 = new HashMap<String, String>();
        map3.put("monthName", "1.1");
        сhildDataItemList1.add(map3);
        HashMap<String, String> map4 = new HashMap<String, String>();
        map4.put("monthName", "1.2");
        сhildDataItemList1.add(map4);
        сhildDataList.add(сhildDataItemList1);

        ArrayList<Map<String, String>> сhildDataItemList2
    	= new ArrayList<Map<String, String>>();
        HashMap<String, String> map5 = new HashMap<String, String>();
        map5.put("monthName", "2.1");
        сhildDataItemList2.add(map5);
        HashMap<String, String> map6 = new HashMap<String, String>();
        map6.put("monthName", "2.2");
        сhildDataItemList2.add(map6);
        сhildDataList.add(сhildDataItemList2);
        
    	SimpleExpandableListAdapter adapter
    	= new SimpleExpandableListAdapter(
                this.getContext(), groupDataList,
                android.R.layout.simple_expandable_list_item_1, groupFrom,
                groupTo, сhildDataList, android.R.layout.simple_list_item_1,
                childFrom, childTo);
    	
    	expandableListView1.setAdapter(adapter);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы