我想在按钮点击

时间:2015-05-21 12:17:16

标签: android

我想在按钮点击时加载可扩展列表视图。 在第一个活动我有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);
}

谢谢

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

根据我的理解,您的MainActivity.java课程中有按钮。

以下是我会尝试的一些代码,我没有在行动中对此进行测试,但它可能会指向正确的方向。

让您的MainActivity处理您的点击次数。

public class MainActivity extends Activity implements View.OnClickListener {

这使你必须覆盖一个方法。

@Override
public void onClick(View v) {

}

如果您将按钮放在xml布局中,则应该在按钮上显示ID。然后你可以处理这个被覆盖的方法中的点击

@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

很抱歉,我没有回答完整的解决方案。我希望这有点帮助。