Как получить элемент из дочернего элемента в ExpandableListView?

У меня есть метод onChildClick в моем приложении, этот мой код

public class listview extends ExpandableListActivity { private static final String NAME = "NAME"; private static final String IS_EVEN = "IS_EVEN"; private ExpandableListAdapter mAdapter; List<Map<String, String>> groupData = new ArrayList<Map<String, String>>(); List<List<Map<String, String>>> childData = new ArrayList<List<Map<String, String>>>(); InputStream is; boolean addState = true; boolean addCountry; HashMap<String, String> countryMap = new HashMap<String, String>(); HashMap<String, String> stateMap = new HashMap<String, String>(); int count = 0; int count1 = -1; int count2 = 0; List<String> stateCount = new ArrayList<String>(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Reading data from text file to inout stream is = this.getResources().openRawResource(R.raw.countrystate); BufferedReader reader = new BufferedReader(new InputStreamReader(is)); try { String line = ""; while ((line = reader.readLine()) != null) { String[] strings = line.split("-"); String ctry = strings[0].trim(); String st = strings[1].trim(); /* * loading country and state to two separate hash tables */ if (countryMap.containsValue(ctry)) { addCountry = false; if (!addState) { stateMap.put("state" + count1 + count2, st); count2++; } } else { addCountry = !addCountry; count1++; //adding no. of states for a country to a list stateCount.add("" + count2); if (addCountry) { count2 = 0; countryMap.put("country" + count, ctry); stateMap.put("state" + count1 + count2, st); addState = false; } count2++; count++; } } } catch (Exception e) { } //re-arranging the state count list stateCount.add("" + count2); stateCount.remove(0); for (int i = 0; i < countryMap.size(); i++) { Map<String, String> curGroupMap = new HashMap<String, String>(); groupData.add(curGroupMap); String ctry = countryMap.get("country" + i); curGroupMap.put(NAME, ctry); curGroupMap.put(IS_EVEN, "Country " + i); List<Map<String, String>> children = new ArrayList<Map<String, String>>(); int k = Integer.parseInt(stateCount.get(i)); for (int j = 0; j < k; j++) { Map<String, String> curChildMap = new HashMap<String, String>(); children.add(curChildMap); curChildMap.put(NAME, stateMap.get("state" + i + j)); // curChildMap.put(IS_EVEN, "State " + j); } childData.add(children); } // Set up our adapter mAdapter = new SimpleExpandableListAdapter(this, groupData, android.R.layout.simple_expandable_list_item_1, new String[] { NAME, IS_EVEN }, new int[] { android.R.id.text1, android.R.id.text2 }, childData, android.R.layout.simple_expandable_list_item_2, new String[] { NAME, IS_EVEN }, new int[] { android.R.id.text1, android.R.id.text2 }); setListAdapter(mAdapter); } public boolean onChildClick (ExpandableListView parent, View v, int groupPosition,int childPosition,long id) { System.out.println("Inside onChildClick at groupPosition = " + groupPosition +" Child clicked at position " + childPosition+v.toString()); return true; } public List<List<Map<String, String>>> getChildData() { return childData; } } 

Мой метод onClick

 public boolean onChildClick (ExpandableListView parent, View v, int groupPosition,int childPosition,long id) { System.out.println("Inside onChildClick at groupPosition = " + groupPosition +" Child clicked at position " + childPosition+v.toString()); return true; } 

Я хочу получить String, если я нажал на список дочерних элементов

Это мой логарифм:

 07-18 11:40:54.334: INFO/System.out(1014): Inside onChildClick at groupPosition = 0 Child clicked at position 0android.widget.TwoLineListItem@405337c0 07-18 11:40:56.714: DEBUG/dalvikvm(916): GC_EXPLICIT freed 14K, 53% free 2557K/5379K, external 884K/1038K, paused 111ms 07-18 11:40:58.744: INFO/System.out(1014): Inside onChildClick at groupPosition = 0 Child clicked at position 0android.widget.TwoLineListItem@405337c0 

Я хочу получить данные String не «TwoLineListItem @ 405337c0», кто-нибудь может мне помочь? благодаря

Solutions Collecting From Web of "Как получить элемент из дочернего элемента в ExpandableListView?"

Использование:

 parent.getExpandableListAdapter().getChild(groupPosition, childPosition); 

(Если вы хотите, чтобы данные дочернего .getGroup(groupPosition) или .getGroup(groupPosition) если вы хотите получить данные из группы), вместо:

 v.toString() 

попробуй это

 public boolean onChildClick (ExpandableListView parent, View v, int groupPosition,int childPosition,long id) { System.out.println("Inside onChildClick at groupPosition = " + groupPosition +" Child clicked at position " + childData.get(groupposition).get(childPosition).get("NAME")); return true; } 

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

 @Override public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { // TODO Auto-generated method stub String message; TextView tx = (TextView) v; message=tx.getText().toString(); return false; } 

С помощью этого кода вы получите текст дочернего элемента ExpandableListView