<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=408727&amp;view=findpost&amp;p=3669867</guid>
        <pubDate>Fri, 13 May 2016 13:27:19 +0000</pubDate>
        <title>ExpandableListView</title>
        <link>https://forum.sources.ru/index.php?showtopic=408727&amp;view=findpost&amp;p=3669867</link>
        <description><![CDATA[Kamenev_D: Всё сделал. Заработало как надо.]]></description>
        <author>Kamenev_D</author>
        <category>Android</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=408727&amp;view=findpost&amp;p=3668693</guid>
        <pubDate>Thu, 05 May 2016 14:25:39 +0000</pubDate>
        <title>ExpandableListView</title>
        <link>https://forum.sources.ru/index.php?showtopic=408727&amp;view=findpost&amp;p=3668693</link>
        <description><![CDATA[Kamenev_D: Есть класс <br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;public class AdapterHelper</div><div class="code_line">{</div><div class="code_line">final String ATR_GROUP_NAME = &quot;gropuName&quot;;</div><div class="code_line">final String ATR_PHONE_NAME = &quot;phoneName&quot;;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">String groups[];</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">String g_item[];</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">ArrayList&#60;Map&#60;String,String&#62;&#62; groupsData;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">ArrayList&#60;Map&#60;String,String&#62;&#62; childDataItem;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;ArrayList&#60;ArrayList&#60;Map&#60;String,String&#62;&#62;&#62; childData;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">Map&#60;String,String&#62; m;</div><div class="code_line">&nbsp;</div><div class="code_line">Context ctx;</div><div class="code_line">&nbsp;</div><div class="code_line">AdapterHelper(Context ctx, String groups[],String g_item[])</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;this.ctx = ctx;</div><div class="code_line">&nbsp;&nbsp; &nbsp;this.groups = groups;</div><div class="code_line">&nbsp;&nbsp; &nbsp;this.g_item = g_item;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">SimpleExpandableListAdapter adapter;</div><div class="code_line">&nbsp;</div><div class="code_line">SimpleExpandableListAdapter getAdapter()</div><div class="code_line">&nbsp;</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;groupsData = new ArrayList&#60;Map&#60;String, String&#62;&#62;();</div><div class="code_line">&nbsp;&nbsp; &nbsp;for (String group : groups)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;m = new HashMap&#60;String, String&#62;();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;m.put(ATR_GROUP_NAME, group);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;groupsData.add(m);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;String groupeFrom[] = {ATR_GROUP_NAME};</div><div class="code_line">&nbsp;&nbsp; &nbsp;int groupTo[] = new int[]{android.R.id.text1};</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;childData = new ArrayList&#60;ArrayList&#60;Map&#60;String, String&#62;&#62;&#62;();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;childDataItem = new ArrayList&#60;Map&#60;String, String&#62;&#62;();</div><div class="code_line">&nbsp;&nbsp; &nbsp;for (String phone : g_item)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;m = new HashMap&#60;String, String&#62;();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;m.put(ATR_PHONE_NAME, phone);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;childDataItem.add(m);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;childData.add(childDataItem);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;String childFrom[] = {ATR_PHONE_NAME};</div><div class="code_line">&nbsp;&nbsp; &nbsp;int childTo[] = new int[]{android.R.id.text1};</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;adapter = new SimpleExpandableListAdapter(ctx, groupsData, simple_expandable_list_item_1,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;groupeFrom, groupTo, childData, android.R.layout.simple_list_item_1, childFrom, childTo);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;return adapter;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">String getGroupText(int groupPos)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;return ((Map&#60;String,String&#62;) (adapter.getGroup(groupPos))).get(ATR_GROUP_NAME);</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">String getChildText(int groupPos, int childPos)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;return ((Map&#60;String,String&#62;) (adapter.getChild(groupPos, childPos))).get(ATR_PHONE_NAME);</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">String getGroupChildText(int groupPos, int childPos)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;return getGroupText(groupPos) + &quot; &quot; + getChildText(groupPos, childPos);</div><div class="code_line">}}</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<br>
Хочу вызывать в MainActivity, что бы при каждом вызове добавлять группу и строки.<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;private ExpandableListView expandableListView;</div><div class="code_line">&nbsp;private AdapterHelper ah;</div><div class="code_line">&nbsp;private SimpleExpandableListAdapter adapter;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;String groups[] = {&quot;Group_1&quot;};</div><div class="code_line">&nbsp;String g_string[] = {&quot;String&quot;,&quot;String_1&quot;,&quot;String_2&quot;};</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;ah = new AdapterHelper(this,groups,g_string);</div><div class="code_line">&nbsp;adapter = ah.getAdapter();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;expandableListView.setAdapter(adapter);</div></ol></div></div></div></div><br>
<br>
Всё добавляется. Но только для одной группы. Что переделать что-бы при каждом отдельном вызове, добавлялась новая группа с строками? У меня в итоге добавляется только то, что было вызвано последним.<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;String groups[] = {&quot;Group_1&quot;};</div><div class="code_line">&nbsp;&nbsp; &nbsp;String strings_1[] = {&quot;String_1&quot;,&quot;String_2&quot;,&quot;String_3&quot;};</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;String groups1[] = {&quot;Group_2&quot;};</div><div class="code_line">&nbsp;&nbsp; &nbsp;String strings_2[] = {&quot;String_1&quot;,&quot;String_2&quot;,&quot;String_3&quot;};</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;ah = new AdapterHelper(this,groups,strings_1);</div><div class="code_line">&nbsp;&nbsp; &nbsp;ah1 = new AdapterHelper(this,groups1,strings_2);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;adapter = ah.getAdapter();</div><div class="code_line">&nbsp;&nbsp; &nbsp;adapter = ah1.getAdapter();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;expandableListView.setAdapter(adapter);</div></ol></div></div></div></div><br>
Т.е не добавляется, а перезаписывает существующую группу.<br>
<br>
Решил попробовать следующее: В конструктор добавить второй параметр, к примеру String g_item_2[], а в сам метод второй вызов <br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;childDataItem = new ArrayList&#60;Map&#60;String, String&#62;&#62;();</div><div class="code_line">for (String phone : g_item_2)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;m = new HashMap&#60;String, String&#62;();</div><div class="code_line">&nbsp;&nbsp; &nbsp;m.put(ATR_PHONE_NAME, phone);</div><div class="code_line">&nbsp;&nbsp; &nbsp;childDataItem.add(m);</div><div class="code_line">}</div><div class="code_line">childData.add(childDataItem);</div></ol></div></div></div></div><br>
<br>
получилось что если вызывать<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;String groups[] = {&quot;Group_11&quot;,&quot;TEST&quot;};</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;String strings_1[] = {&quot;String_11&quot;,&quot;String_2&quot;,&quot;String_3&quot;};</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;String strings_2[] = {&quot;String_1&quot;,&quot;String_2&quot;,&quot;String_3&quot;};</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;textView = (TextView)findViewById(R.id.textView);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;ah = new AdapterHelper(this,groups,strings_1,strings_2);</div><div class="code_line">&nbsp;&nbsp; &nbsp;adapter = ah.getAdapter();</div></ol></div></div></div></div><br>
то добавляет как надо. Но это не то, идет дублирование кода во первых, а во вторых теряется весь смысл, как выход использовать цикл, в котором идет перебор добавляемых массивов строк в конструкторе. И вот тут то проблема, не могу понять как соорудить этот цикл, а точнее как во второй итерации, подставить следующий массив строк. К примеру:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;for(int a = 0; a &#60; 2; a++) //Кол-во массивов строк в конструкторе</div><div class="code_line">{</div><div class="code_line">childDataItem = new ArrayList&#60;Map&#60;String, String&#62;&#62;();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;for (int a =0; a &#60; g_item.length; a++ )</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;m = new HashMap&#60;String, String&#62;();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;m.put(ATR_PHONE_NAME, g_item[a]); </div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;childDataItem.add(m);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;childData.add(childDataItem);</div><div class="code_line">&nbsp;}</div></ol></div></div></div></div><br>
т.е добавится первый массив g_item. Как в следующую итерацию подставить следующий массив g_item_2 ?]]></description>
        <author>Kamenev_D</author>
        <category>Android</category>
      </item>
	
      </channel>
      </rss>
	