2014-02-06 33 views
1

我已經構建了一個可擴展的列表視圖。當我點擊子項時,我想開始另一個活動。我該如何實現這個目標?我嘗試使用onChildClick方法,但沒有work.Here是我的MainActivity類。請告訴我,我該如何做到這一點。如何導航到單擊可展開列表視圖中的子項目的下一個活動?

package com.example.expandablelistview; 

    import java.util.ArrayList; 
    import java.util.HashMap; 
    import java.util.List; 
    import android.app.Activity; 
    import android.content.Intent; 
    import android.os.Bundle; 
    import android.view.View; 
    import android.widget.ExpandableListView; 
    import android.widget.ListView; 
    import android.widget.TextView; 
    import android.widget.ExpandableListView.OnChildClickListener; 


    public class MainActivity extends Activity { 

    ExpandableListAdapter listAdapter; 
    ExpandableListView expListView; 
    List<String> listDataHeader; 
    HashMap<String, List<String>> listDataChild; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    // get the listview 
    expListView = (ExpandableListView) findViewById(R.id.lvExp); 

    // preparing list data 
    prepareListData(); 

    listAdapter = new ExpandableListAdapter(this, listDataHeader, listDataChild); 

    // setting list adapter 
    expListView.setAdapter(listAdapter); 

    expListView.setOnChildClickListener(new OnChildClickListener() { 

     @Override 
     public boolean onChildClick(ExpandableListView parent, View view, 
       int groupPosition, int childPosition, long id) { 
      // selected item 
      String item = ((TextView) view).getText().toString(); 
      Intent i = new Intent(getApplicationContext(), SingleListItem.class); 
      startActivity(i); 
     // sending data to new activity 
      i.putExtra("item", item); 
      startActivity(i); 
      return false; 

      } 
     }); 
    } 

    /* 
* Preparing the list data 
*/ 
    private void prepareListData() { 
    listDataHeader = new ArrayList<String>(); 
    listDataChild = new HashMap<String, List<String>>(); 

    // Adding child data 
    listDataHeader.add("Catalog"); 
    listDataHeader.add("My Account"); 
    listDataHeader.add("Library Info"); 

    // Adding child data 
    List<String> catalog = new ArrayList<String>(); 
    catalog.add("Automobile"); 
    catalog.add("Computer Science"); 
    catalog.add("Civil"); 
    catalog.add("Electronics and Communication"); 
    catalog.add("Electrical and Electronics"); 
    catalog.add("Information Science"); 
    catalog.add("Industrial Production"); 
    catalog.add("Mechanical"); 
    catalog.add("Basic Sciences"); 

    List<String> myaccount = new ArrayList<String>(); 
    myaccount.add("Check Holds"); 
    myaccount.add("Unreserve Books"); 

    List<String> libraryinfo = new ArrayList<String>(); 
    libraryinfo.add("Library Hours"); 
    libraryinfo.add("Contact Library"); 

    listDataChild.put(listDataHeader.get(0), catalog); // Header, Child data 
    listDataChild.put(listDataHeader.get(1), myaccount); 
    listDataChild.put(listDataHeader.get(2), libraryinfo); 
     } 
    } 

回答

1

試試這個代碼

expListView.setOnChildClickListener(new OnChildClickListener() { 

    @Override 
    public boolean onChildClick(ExpandableListView parent, View view, 
      int groupPosition, int childPosition, long id) { 
     // selected item 
     String item = ((TextView) view).getText().toString(); 
     Intent i = new Intent(getApplicationContext(), SingleListItem.class); 
     i.putExtra("item", item); 
     startActivity(i); 
     } 
     return false; 
    }); 
相關問題