2011-11-28 56 views
1

我有这样的代码来创建可扩展的ListView:如何在Android上添加imagebutton到Expandable ListView的子项?

public class Menu extends ExpandableListActivity { 
    int l; 
    ExpandableListAdapter mAdapter; 
    ImageButton add = (ImageButton) findViewById(R.id.imageAdd); 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.week_menu); 
     final String NAME = "NAME"; 
     final String EVENT = "EVENT"; 
     l = getIntent().getExtras().getInt("nilai"); 

     List<Map<String, String>> createGroupList = new ArrayList<Map<String, String>>(); 
     List<List<Map<String, String>>> createChildList = new ArrayList<List<Map<String, String>>>(); 
     for (int i = 0, k = 0; i < 5; i++) { 
      Map<String, String> curGroupMap = new HashMap<String, String>(); 
      createGroupList.add(curGroupMap); 
      if (i == 0) 
       curGroupMap.put(NAME, "Breakfast 07.00"); 
      else if (i == 1) 
       curGroupMap.put(NAME, "Snack 10.00"); 
      else if (i == 2) 
       curGroupMap.put(NAME, "Lunch 12.00"); 
      else if (i == 3) 
       curGroupMap.put(NAME, "Snack 16.00"); 
      else if (i == 4) 
       curGroupMap.put(NAME, "Dinner 19.00"); 

      List<Map<String, String>> children = new ArrayList<Map<String, String>>(); 
      if (i == 1 || i == 3) 
      { 
       for (int j = 0; j < 6; j++, k++) { 
        if(AdapterDB.optimal_chromosomes.get(l).gens[k].id != 164) { 
         Map<String, String> curChildMap = new HashMap<String, String>(); 
         children.add(curChildMap); 
         curChildMap.put(NAME, AdapterDB.optimal_chromosomes.get(l).gens[k].name); 
         curChildMap.put(EVENT, "" + add); 
        } 
       } 
      } 
      else 
      { 
       for (int j = 0; j < 12; j++, k++) { 
        if(AdapterDB.optimal_chromosomes.get(l).gens[k].id != 164) { 
         Map<String, String> curChildMap = new HashMap<String, String>(); 
         children.add(curChildMap); 
         curChildMap.put(NAME, AdapterDB.optimal_chromosomes.get(l).gens[k].name); 
         curChildMap.put(EVENT, "" + add); 
        } 
       } 
      } 
      /* 
      add.setOnClickListener(new OnClickListener() { 
       public void onClick(View v) { 

       } 
      });*/ 
      createChildList.add(children); 
     } 

     mAdapter = new SimpleExpandableListAdapter(this, createGroupList, android.R.layout.simple_expandable_list_item_1, new String [] {NAME}, new int[]{android.R.id.text1}, createChildList, android.R.layout.simple_expandable_list_item_2, new String[] {NAME, EVENT}, new int [] {android.R.id.text2}); 
     setListAdapter(mAdapter); 


    } 

这是错误显示java.lang.NullPointerException在

ImageButton add = (ImageButton) findViewById(R.id.imageAdd); 

...任何想法?我想在Android中为孩子添加imagebutton。如何解决它并使其可点击? Thx

+3

检查[this](http://stackoverflow.com/questions/1353101/about-expandable-list-in-android)回答 –

+0

这对我来说也不适用> _ < – Michelle

回答

1

您需要在setContentView执行后在onCreate按钮中初始化变量。

ImageButton add; 

而在onCreate方法

setContentView(R.layout.week_menu); 
add = (ImageButton) findViewById(R.id.imageAdd); 

findViewById正在寻找在指定的setContentView布局内的图。但那还没有发生。所以错误会发生。