2015-05-21 2 views
-3

Я хочу загрузить расширяемое представление списка при нажатии кнопки. На первом мероприятии у меня есть 2 кнопки. когда я нажимаю кнопку 1, он будет загружать расширяемое представление списка с 10 элементами, и когда я нажму кнопку 2, он загрузит расширяемое представление списка с 5 элементами. Может кто-нибудь помочь мне, как это сделать.Я хочу создать расширяемый просмотр списка при нажатии кнопки

MainAcitivy

private void prepareList(String sub) { 
    listHeader = new ArrayList<String>(); 
    listChild = new HashMap<String, List<String>>(); 
    List<String> a1 = null; 
    List<String> a2 = null; 
    List<String> a3 = null; 
    List<String> a4 = null; 
    List<String> a5 = null; 
    List<String> a6 = null; 
    List<String> a7 = null; 
    List<String> a8 = null; 
    List<String> a9 = null; 
    List<String> a10 = null; 

    if (sub.equalsIgnoreCase("btn1")) { 
     // Adding Child Data 
     listHeader.add("1. Hello1"); 
     listHeader.add("2. Hello2"); 
     listHeader.add("3. Hello3"); 
     listHeader.add("4. Hello4"); 
     listHeader.add("5. Hello5"); 
     listHeader.add("6. Hello6"); 
     listHeader.add("7. Hello7"); 
     listHeader.add("8. Hello8"); 
     listHeader.add("9. Hello9"); 
     listHeader.add("10. Hello10"); 

     // Adding Child Data 
     a1 = new ArrayList<String>(); 
     a1.add("1"); 

     a2 = new ArrayList<String>(); 
     a2.add("2"); 

     a3 = new ArrayList<String>(); 
     a3.add("3"); 

     a4 = new ArrayList<String>(); 
     a4.add("4"); 

     a5 = new ArrayList<String>(); 
     a5.add("5"); 

     a6 = new ArrayList<String>(); 
     a6.add("6"); 

     a7 = new ArrayList<String>(); 
     a7.add("7"); 

     a8 = new ArrayList<String>(); 
     a8.add("8"); 

     a9 = new ArrayList<String>(); 
     a9.add("9"); 

     a10 = new ArrayList<String>(); 
     a10.add("10"); 
    } 
    else if (sub.equalsIgnoreCase("btn2")) { 
     listHeader.add("1. Hello1"); 
     listHeader.add("2. Hello2"); 
     listHeader.add("3. Hello3"); 
     listHeader.add("4. Hello4"); 
     listHeader.add("5. Hello5"); 

     // Adding Child Data 
     a1 = new ArrayList<String>(); 
     a1.add("1"); 

     a2 = new ArrayList<String>(); 
     a2.add("2"); 

     a3 = new ArrayList<String>(); 
     a3.add("3"); 

     a4 = new ArrayList<String>(); 
     a4.add("4"); 

     a5 = new ArrayList<String>(); 
     a5.add("5"); 
    } 
    listChild.put(listHeader.get(0), a1); 
    listChild.put(listHeader.get(1), a2); 
    listChild.put(listHeader.get(2), a3); 
    listChild.put(listHeader.get(3), a4); 
    listChild.put(listHeader.get(4), a5); 
    listChild.put(listHeader.get(5), a6); 
    listChild.put(listHeader.get(6), a7); 
    listChild.put(listHeader.get(7), a8); 
    listChild.put(listHeader.get(8), a9); 
    listChild.put(listHeader.get(9), a10); 
} 

Спасибо

+0

Вы хотите загрузить список с помощью x числа групп или вы хотите загрузить конкретный список расширяемых списков с группой x Childs? – raxelsson

+0

@raxelsson: конкретное число групп – Rutvik

+0

@RavindraKushwaha: посмотрите код, я передаю текст при нажатии кнопки с помощью намерения и проверки, если условие – Rutvik

ответ

0

Вы можете попробовать с добавлением OnClick в адаптере, как этот

@Override 
public View getGroupView(int pos, boolean arg1, View convertView, ViewGroup arg3) { 

    if (convertView == null) { 
     LayoutInflater infalInflater = (LayoutInflater) act.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = infalInflater.inflate(R.layout.drawerlayout, null); 
    } 
    convertView.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      // TODO Auto-generated method stub 

     } 
    }); 
} 

или посмотреть на весь этот пример http://androidtrainningcenter.blogspot.com/2012/07/android-expandable-listview-simple.html

0

Насколько я понимаю, у вас есть кнопки в вашем классе MainActivity.java.

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

Сделайте свою MainActivity обработкой ваших кликов.

public class MainActivity extends Activity implements View.OnClickListener { 

Это заставляет вас переопределить метод.

@Override 
public void onClick(View v) { 

} 

У вас должны быть ID на ваших кнопках, если вы поместили их в макет xml. И после этого вы можете обработать щелчок в этой перегруженной мето

@Override 
public void onClick(View v) { 
    switch (v.getId()) { 
     case R.id.btn1: 
      List<String> items1 = new ArrayList<String>("1", "2", "3", "4", "5",) 
      loadGroups(items1); 
      break; 
     case R.id.btn2: 
      List<String> items2 = new ArrayList<String>("1", "2", "3", "4", "5", "6", "7", "8", "9", "10",)    
      loadGroups(items2); 
      break; 
    } 
} 

затем реализовать этот метод loadGroups() что-то вроде этого.

private void loadGroups(List<String> groups) { 
    yourExpandableListView.setAdapter(new MyExpListAdapter(groups));    
} 

это обновит развертываемое список с новыми данными и вызвать notifyDataSetChanged(), который будет перерисовывать ваши детали адаптера.

В расширенном виде списка вы также должны иметь Map<String, List<String>>, который должен содержать группы с его дочерними элементами.

Подробнее см. По адресу android docs.

Жаль, что я не ответил с полным решением. Надеюсь, это немного поможет.

Смежные вопросы