2014-09-01 33 views
1

我在片段中有一個expandableListView如果我點擊一個孩子,我希望它打開一個活動/片段的一些內容。下面是我的ListView如何讓一個孩子在一個expandlelistview中點擊

公共類TodoFragment延伸片段{

public TodoFragment(){} 

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

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ 
    return inflater.inflate(R.layout.fragment_todo,container, false); 
} 
@Override 
public void onStart() { 
    super.onStart(); 

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

    // preparing list data 
    prepareListData(); 

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


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

    // Listview Group click listener 
    expListView.setOnGroupClickListener(new OnGroupClickListener() { 

     @Override 
     public boolean onGroupClick(ExpandableListView parent, View v, 
       int groupPosition, long id) { 
      // Toast.makeText(getApplicationContext(), 
      // "Group Clicked " + listDataHeader.get(groupPosition), 
      // Toast.LENGTH_LONG).show(); 
      return false; 
     } 
    }); 

    // Listview on child click listener 
    expListView.setOnChildClickListener(new OnChildClickListener() { 

     @Override 
     public boolean onChildClick(ExpandableListView parent, View v, 
       int groupPosition, int childPosition, long id) { 
      // TODO Auto-generated method stub 
      Toast.makeText(
        getActivity(), 
        listDataHeader.get(groupPosition) 
          + " : " 
          + listDataChild.get(
            listDataHeader.get(groupPosition)).get(
            childPosition), Toast.LENGTH_LONG) 
        .show(); 
      return false; 
     } 
    }); 
} 

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

    // Adding child data 
    listDataHeader.add("Culture"); 
    listDataHeader.add("Beaches"); 
    listDataHeader.add("Car Rental"); 
    listDataHeader.add("Dinner"); 

    // Adding child data 
    List<String> culture= new ArrayList<String>(); 
    culture.add("Grotten van Hato"); 
    culture.add("Ostrich Farm"); 
    culture.add("Shete Boka national Park"); 
    culture.add("Landhuis Knip"); 
    culture.add("Christoffelpark"); 
    culture.add("Navy Museum"); 
    culture.add("Post Museum"); 

    List<String> beaches = new ArrayList<String>(); 
    beaches.add("Mambo Beach"); 
    beaches.add("Knip"); 
    beaches.add("Playa Kalki"); 
    beaches.add("Westpunt"); 
    beaches.add("Boca Santa Cruz"); 
    beaches.add("Cas Abao"); 
    beaches.add("Playa PortoMari"); 
    beaches.add("Kontiki Beach"); 
    beaches.add("Jan Thiel Beach"); 

    List<String> car = new ArrayList<String>(); 
    car.add("budget rental"); 
    car.add("Avis Rental"); 
    car.add("Alamo Car Rental"); 
    car.add("Noordstar Rental"); 
    car.add("Europa Rental"); 

    List<String> dinner = new ArrayList<String>(); 
    dinner.add("Truk di Pan"); 
    dinner.add("Burger King"); 
    dinner.add("Punda Food"); 


    listDataChild.put(listDataHeader.get(0), culture); // Header, Child data 
    listDataChild.put(listDataHeader.get(1), beaches); 
    listDataChild.put(listDataHeader.get(2), car); 
    listDataChild.put(listDataHeader.get(3), dinner); 

} 

}

誰能幫我請。

+0

您可以使用意向意圖=新意圖(背景下,NextActivity.class); startActivity(意向);此代碼位於onChildClick方法內,您可以將數據設置爲您要在下一個活動中使用的意向。 – 2014-09-01 15:01:08

+0

謝謝拉吉夫,我真的沒有得到的是放置它,我是否需要爲每個孩子做這個。 android如何知道被點擊的是哪個孩子。你可以幫我請 – Hotcaribbean 2014-09-06 13:47:10

+0

看到我下面的回答 – 2014-09-08 13:59:48

回答

1

您可以使用下面的代碼

//列表視圖上的孩子點擊收聽

expListView.setOnChildClickListener(new OnChildClickListener() { 

    @Override 
    public boolean onChildClick(ExpandableListView parent, View v, 
      int groupPosition, int childPosition, long id) { 
     //You have to create next activity say NextActivity.java 
     Intent intent = new Intent(getActivity(), NextActivity.class); 
     startActivity(intent); 
     return false; 
    } 
}); 
+0

謝謝拉吉夫,我很抱歉不理解它是正確的。如果我這樣做,我會在上下文中遇到錯誤。 android如何知道我點擊了哪個孩子。就像我的例子,例如Grotten van Hato或Kontiki Beach。你能幫我這個請 – Hotcaribbean 2014-09-09 20:47:08

+0

我已經糾正了這個問題。你可以使用getActivity()作爲上下文 – 2014-09-10 02:38:32

+0

非常感謝你 – Hotcaribbean 2015-01-16 23:03:51

相關問題