2014-09-01 8 views
1

조각에 expandableListView가 있습니다. 자식을 클릭하면 일부 내용이있는 활동/조각을 열길 원합니다. 다음은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 메소드 내부에 있으며, 다음 활동에서 사용할 인 텐트로 데이터를 설정할 수 있습니다. –

+0

감사합니다 Rajiv, 내가 정말로 얻지 않는 것은 그것을 놓는 것이 었습니다. 그리고 나는 모든 아이들을 위해 이것을 할 필요가 있습니다. 안드로이드는 어떤 아이가 클릭되었는지 어떻게 알 수 있습니까? 그걸로 나를 도울 수 있습니까 – Hotcaribbean

+0

아래 내 대답보기 –

답변

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

Rajiv, 고맙습니다. 내가 이렇게하면 나는 맥락에서 잘못을 느낀다. 안드로이드는 내가 뭘 클릭 하는지를 안다. 예를 들어 Grotten van Hato 또는 Kontiki Beach와 같은 나의 예와 같습니다. 이걸로 나를 도울 수 있습니까 – Hotcaribbean

+0

문제를 해결했습니다. 컨텍스트에 대해 getActivity()를 사용할 수 있습니다. –

+0

고맙습니다. – Hotcaribbean

관련 문제