2014-11-08 5 views
0

Я делаю свое первое приложение для Android, проект для моего университета. Теперь я последовал за this guide, чтобы создать расширяемый список, но теперь я хочу иметь его в собственном фрагменте, чтобы он выглядел более или менее.Помещение ExpandableListView в фрагмент - Android

enter image description here
Может ли кто-нибудь помочь мне с этим? Я довольно неопытен с Android tbh, поэтому я ценю любую помощь, которую я могу получить!

Отрывок из руководства:

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

List<Map<String, String>> groupData = new ArrayList<Map<String, String>>(); 
List<List<Map<String, String>>> childData = new ArrayList<List<Map<String, String>>>(); 

/* ******************** Start Group ********************* */ 
Map<String, String> curgroupMap1 = new HashMap<String, String>(); 
groupData.add(curgroupMap1); 
curgroupMap1.put("parent", "Master 1"); 

List<Map<String,String>> children1 =new ArrayList<Map<String,String>>(); 
/* *** ChildData ***/ 
Map<String, String> curChildMap1 = new HashMap<String, String>(); 
children1.add(curChildMap1); 
curChildMap1.put("child", "Bank"); 

/* *** ChildData ***/ 
Map<String, String> curChildMap2 = new HashMap<String, String>(); 
children1.add(curChildMap2); 
curChildMap2.put("child", "Executive"); 

/* *** ChildData ***/ 
Map<String, String> curChildMap3 = new HashMap<String, String>(); 
children1.add(curChildMap3); 
curChildMap3.put("child", "Customer"); 

/* ***ChildData ***/ 
Map<String, String> curChildMap4 = new HashMap<String, String>(); 
children1.add(curChildMap4); 
curChildMap4.put("child", "State"); 

/* ***ChildData ***/ 
Map<String, String> curChildMap5 = new HashMap<String, String>(); 
children1.add(curChildMap5); 
curChildMap5.put("child", "City"); 

childData.add(children1); 

/* *************************End Group **************************/ 

/* ******************** Start Group ********************* */ 
Map<String, String> curgroupMap2 = new HashMap<String, String>(); 
groupData.add(curgroupMap2); 
curgroupMap2.put("parent", "Master 2"); 
List<Map<String,String>> children2 =new ArrayList<Map<String,String>>(); 

/* *** ChildData ***/ 
Map<String, String> curChildMap6 = new HashMap<String, String>(); 
children2.add(curChildMap6); 
curChildMap6.put("child", "Android"); 

/* *** ChildData ***/ 
Map<String, String> curChildMap7 = new HashMap<String, String>(); 
children2.add(curChildMap7); 
curChildMap7.put("child", "iPhone"); 

/* *** ChildData ***/ 
Map<String, String> curChildMap8 = new HashMap<String, String>(); 
children2.add(curChildMap8); 
curChildMap8.put("child", "Windows"); 

childData.add(children2); 

/* *************************End Group **************************/ 


mAdapter = new SimpleExpandableListAdapter(
      this, 
      groupData, 
      android.R.layout.simple_expandable_list_item_1, 
      new String[] { "parent" }, 
      new int[] { android.R.id.text1, android.R.id.text2 }, 
      childData, 
      android.R.layout.simple_expandable_list_item_2, 
      new String[] {"child"}, 
      new int[] { android.R.id.text1 } 
      ); 
setListAdapter(mAdapter); 

expand = getExpandableListView(); 

expand.setOnChildClickListener(new OnChildClickListener() { 

    @Override 
    public boolean onChildClick(ExpandableListView parent, View v, 
      int groupPosition, int childPosition, long id) { 
     // TODO Auto-generated method stub 

     switch (groupPosition) 
     { 
     case 0 : 
      switch(childPosition) 
      { 
      case 0 : 
       Toast.makeText(getBaseContext(), "Bank", 
        Toast.LENGTH_SHORT).show(); 
       break; 
      case 1: 
       Toast.makeText(getBaseContext(), "Executive", 
        Toast.LENGTH_SHORT).show(); 
       break; 
      case 2: 
       Toast.makeText(getBaseContext(), "Customer", 
        Toast.LENGTH_SHORT).show(); 
       break; 
      case 3 : 
       Toast.makeText(getBaseContext(), "State", 
        Toast.LENGTH_SHORT).show(); 
       break; 
      case 4 : 
       Toast.makeText(getBaseContext(), "City", 
        Toast.LENGTH_SHORT).show(); 
       break; 
      } 
      break; 
     case 1: 
      switch(childPosition) 
      { 
      case 0 : 
       Toast.makeText(getBaseContext(), "Android", 
        Toast.LENGTH_SHORT).show(); 
       break; 
      case 1: 
       Toast.makeText(getBaseContext(), "iPhone", 
        Toast.LENGTH_SHORT).show(); 
       break; 
      case 2: 
       Toast.makeText(getBaseContext(), "Windows", 
        Toast.LENGTH_SHORT).show(); 
       break; 
      } 
      break; 
     } 

     return false; 
    } 
}); 
+0

почему вы думаете, что * вам нужен фрагмент * ?? это просто дизайн, который вам нужно выполнить .. –

+0

Ну, мне бы очень хотелось сделать это, так как у меня уже есть макет проекта и, как правило, придерживайтесь грубого дизайна. Если есть более простой способ, дайте мне знать! – Deathsservant

+0

Нет необходимости в изменении кода Java. ** Все, что вам нужно, это XML для разработки такого макета. ** –

ответ

0

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

  1. Укажите свои представления в onCreateView() в фрагменте. Вы не должны предполагать, что ваши представления действительно доступны для внесения любых изменений. Изменения пользовательского интерфейса должны быть сделаны в OnActivityCreated().
  2. загрузите расширяемое listview в onActivityCreated() этого фрагмента.

код будет совсем то же самое только что вы бы иметь в виду взгляды как этот

Например:. Listview = (списке следует Listview) getActivity() findViewbyID (R.id.listview); в вашем onCreateview()