2017-02-28 1 views
0

각 그룹 안에 하위 항목이 채워진 그룹 목록이 있습니다. 이미 searchviewfiltered ressults and my 확장 가능 목록보기로 구현하고 확장 및 축소 할 수 있습니다. 문제는 OnChildClickListener를 다루는 방법을 모른다는 것입니다. 일단 OnChildClickListener 함수를 추가하면 응용 프로그램이 갑자기 작동을 멈 춥니 다. 누군가가 내가이 일을 처리하도록 도울 수 있습니까?ExpandableListView, OnChildClickListener

package com.teamamazing.search; 


import java.util.ArrayList; 
import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.app.Activity; 
import android.app.SearchManager; 
import android.content.Context; 
import android.view.Menu; 
import android.view.View; 
import android.widget.ExpandableListView; 
import android.widget.SearchView; 
import android.widget.ExpandableListView.OnChildClickListener; 

public class Accomodation extends Activity implements 
     SearchView.OnQueryTextListener, SearchView.OnCloseListener{ 

    private SearchView search; 
    private Accomodation_Adapter accomodationAdapter; 
    private ExpandableListView expandableListView; 
    private ArrayList<AccomodationHeaderRow> headerRows = new ArrayList<AccomodationHeaderRow>(); 
    MediaPlayer mp; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_accomodation); 
     expandableListView.setOnChildClickListener(expandableListViewClickedItem); 

     SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); 
     search = (SearchView) findViewById(R.id.search); 
     search.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); 
     search.setIconifiedByDefault(false); 
     search.setOnQueryTextListener(this); 
     search.setOnCloseListener(this); 

     //display the list 
     displayList(); 
     //expand all Groups 
     expandAll(); 

    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.acco_search, menu); 
     return true; 
    } 

    //method to expand all groups 
    private void expandAll() { 
     int count = accomodationAdapter.getGroupCount(); 
     for (int i = 0; i < count; i++){ 
      expandableListView.expandGroup(i); 
     } 
    } 

//this is my current problem, there's no error yet the application isn't working. 
    private OnChildClickListener expandableListViewClickedItem = new OnChildClickListener() { 

     public boolean onChildClick(ExpandableListView parent, View v, 
            int groupPosition, int childPosition, long id) { 

      if (groupPosition == 0) { 
       switch (childPosition) { 
        //cebuano 
        case 0: 
         mp = MediaPlayer.create(getApplicationContext(), R.raw.anyhotel1); 
         mp.start(); 
         break; 
        //kapampangan 
        case 1: 
         mp = MediaPlayer.create(getApplicationContext(), R.raw.anyhotel2); 
         mp.start(); 
         break; 
        //ilocano 
        case 2: 
         mp = MediaPlayer.create(getApplicationContext(), R.raw.anyhotel); 
         mp.start(); 
         break; 

       } 
      } else if (groupPosition == 1) { 
       switch (childPosition) { 
        //cebuano 
        case 0: 
         mp = MediaPlayer.create(getApplicationContext(), R.raw.anyrestaurant1); 
         mp.start(); 
         break; 
        //kapampangan 
        case 1: 
         mp = MediaPlayer.create(getApplicationContext(), R.raw.anyrestau2); 
         mp.start(); 
         break; 
        //ilocano 
        case 2: 
         mp = MediaPlayer.create(getApplicationContext(), R.raw.anyrestau); 
         mp.start(); 
         break; 

       } 
      } 
      return false; 
     } 

    }; 



    //method to expand all groups 
    private void displayList() { 

     //display the list 
     loadSomeData(); 

     //get reference to the ExpandableListView 
     expandableListView = (ExpandableListView) findViewById(R.id.accomodation_exp); 
     //create the adapter by passing your ArrayList data 
     accomodationAdapter = new Accomodation_Adapter(Accomodation.this, headerRows); 
     //attach the adapter to the list 
     expandableListView.setAdapter(accomodationAdapter); 

    } 

    private void loadSomeData() { 

     ArrayList<AccomodationChildRow> accomodationChildRows = new ArrayList<AccomodationChildRow>(); 

     AccomodationChildRow accomodationChildRow = new AccomodationChildRow("Binisaya: Aduna bay bisag unsa nga hotel nga duol?"); 
     accomodationChildRows.add(accomodationChildRow); 
     accomodationChildRow = new AccomodationChildRow("Kapampangan: Atin bang malapit a hotel kene?"); 
     accomodationChildRows.add(accomodationChildRow); 
     accomodationChildRow = new AccomodationChildRow("Ilocano: Adda kadi ti uray ania nga ot-otel ditoy nga asideg?"); 
     accomodationChildRows.add(accomodationChildRow); 

     AccomodationHeaderRow accomodationHeaderRow = new AccomodationHeaderRow("Are there any hotels near here? | Mayroon bang anumang malapit na hotel dito?", accomodationChildRows); 
     headerRows.add(accomodationHeaderRow); 


     accomodationChildRows = new ArrayList<AccomodationChildRow>(); 
     accomodationChildRow = new AccomodationChildRow("Binisaya: Aduna bay bisag-unsa nga ristorant duol dinhi?"); 
     accomodationChildRows.add(accomodationChildRow); 
     accomodationChildRow = new AccomodationChildRow("Kapampangan:\tAtin bang malapit a pipanganan kene?"); 
     accomodationChildRows.add(accomodationChildRow); 
     accomodationChildRow = new AccomodationChildRow("Ilocano:\tAdda kadi ti uray ania nga asideg ditoy nga resrestauran?"); 
     accomodationChildRows.add(accomodationChildRow); 


     accomodationHeaderRow = new AccomodationHeaderRow("Are there any restaurants near here? | Mayroon bang anumang malapit na restawran dito?", accomodationChildRows); 
     headerRows.add(accomodationHeaderRow); 
    } 


    @Override 
    public boolean onClose() { 
     accomodationAdapter.filterData(""); 
     // expandAll(); 
     return false; 
    } 

    @Override 
    public boolean onQueryTextChange(String query) { 
     accomodationAdapter.filterData(query); 
     expandAll(); 
     return false; 
    } 

    @Override 
    public boolean onQueryTextSubmit(String query) { 
     accomodationAdapter.filterData(query); 
     expandAll(); 
     return false; 
    } 

} 

감사 :

이 내 코드입니다!

답변

0

나는 이미 정답을 발견했습니다. 이것은 내가하는 일입니다 ...

package com.teamamazing.search; 


import java.util.ArrayList; 

import android.content.Intent; 
import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.app.Activity; 
import android.app.SearchManager; 
import android.content.Context; 
import android.view.Menu; 
import android.view.View; 
import android.widget.ExpandableListView; 
import android.widget.SearchView; 
import android.widget.ExpandableListView.OnChildClickListener; 




public class Accomodation extends Activity implements 
     SearchView.OnQueryTextListener, SearchView.OnCloseListener { 

    private SearchView search; 
    private Accomodation_Adapter accomodationAdapter; 
    private ExpandableListView expandableListView; 
    private ArrayList<AccomodationHeaderRow> headerRows = new ArrayList<AccomodationHeaderRow>(); 
    MediaPlayer mp; 



    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_accomodation); 


     //searchview 

     SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); 
     search = (SearchView) findViewById(R.id.search); 
     search.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); 
     search.setIconifiedByDefault(false); 
     search.setOnQueryTextListener(this); 
     search.setOnCloseListener(this); 

     //display the list 
     displayList(); 
     //expand all Groups 
     expandAll(); 

    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.acco_search, menu); 
     return true; 
    } 

    //method to expand all groups 
    private void expandAll() { 
     int count = accomodationAdapter.getGroupCount(); 
     for (int i = 0; i < count; i++){ 
      expandableListView.expandGroup(i); 
     } 
    } 


    //method to expand all groups 
    private void displayList() { 

     //display the list 
     loadSomeData(); 

     //get reference to the ExpandableListView 
     expandableListView = (ExpandableListView) findViewById(R.id.accomodation_exp); 
     //create the adapter by passing your ArrayList data 
     accomodationAdapter = new Accomodation_Adapter(Accomodation.this, headerRows); 
     //attach the adapter to the list 
     expandableListView.setAdapter(accomodationAdapter); 


     setListener(); 

    } 


    void setListener() { 
    expandableListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() { 
     @Override 
     public boolean onChildClick(ExpandableListView listview, View view, 
     int groupPosition, int childPosition, long id) { 

      if (groupPosition == 0) { 
       switch (childPosition) { 
        //cebuano 
        case 0: 
         mp = MediaPlayer.create(getApplicationContext(), R.raw.anyhotel1); 
         mp.start(); 
         break; 
        //kapampangan 
        case 1: 
         mp = MediaPlayer.create(getApplicationContext(), R.raw.anyhotel2); 
         mp.start(); 
         break; 
        //ilocano 
        case 2: 
         mp = MediaPlayer.create(getApplicationContext(), R.raw.anyhotel); 
         mp.start(); 
         break; 

       } 
      } else if (groupPosition == 1) { 
       switch (childPosition) { 
        //cebuano 
        case 0: 
         mp = MediaPlayer.create(getApplicationContext(), R.raw.anyrestaurant1); 
         mp.start(); 
         break; 
        //kapampangan 
        case 1: 
         mp = MediaPlayer.create(getApplicationContext(), R.raw.anyrestau2); 
         mp.start(); 
         break; 
        //ilocano 
        case 2: 
         mp = MediaPlayer.create(getApplicationContext(), R.raw.anyrestau); 
         mp.start(); 
         break; 

       } 
      } 

      return false; 
     } 
    }); 
} 





    private void loadSomeData() { 

     ArrayList<AccomodationChildRow> accomodationChildRows = new ArrayList<AccomodationChildRow>(); 

     AccomodationChildRow accomodationChildRow = new AccomodationChildRow("Binisaya: Aduna bay bisag unsa nga hotel nga duol?"); 
     accomodationChildRows.add(accomodationChildRow); 
     accomodationChildRow = new AccomodationChildRow("Kapampangan: Atin bang malapit a hotel kene?"); 
     accomodationChildRows.add(accomodationChildRow); 
     accomodationChildRow = new AccomodationChildRow("Ilocano: Adda kadi ti uray ania nga ot-otel ditoy nga asideg?"); 
     accomodationChildRows.add(accomodationChildRow); 

     AccomodationHeaderRow accomodationHeaderRow = new AccomodationHeaderRow("Are there any hotels near here? | Mayroon bang anumang malapit na hotel dito?", accomodationChildRows); 
     headerRows.add(accomodationHeaderRow); 


     accomodationChildRows = new ArrayList<AccomodationChildRow>(); 
     accomodationChildRow = new AccomodationChildRow("Binisaya: Aduna bay bisag-unsa nga ristorant duol dinhi?"); 
     accomodationChildRows.add(accomodationChildRow); 
     accomodationChildRow = new AccomodationChildRow("Kapampangan: Atin bang malapit a pipanganan kene?"); 
     accomodationChildRows.add(accomodationChildRow); 
     accomodationChildRow = new AccomodationChildRow("Ilocano: Adda kadi ti uray ania nga asideg ditoy nga resrestauran?"); 
     accomodationChildRows.add(accomodationChildRow); 


     accomodationHeaderRow = new AccomodationHeaderRow("Are there any restaurants near here? | Mayroon bang anumang malapit na restawran dito?", accomodationChildRows); 
     headerRows.add(accomodationHeaderRow); 
    } 


    @Override 
    public boolean onClose() { 
     accomodationAdapter.filterData(""); 
     // expandAll(); 
     return false; 
    } 

    @Override 
    public boolean onQueryTextChange(String query) { 
     accomodationAdapter.filterData(query); 
     expandAll(); 
     return false; 
    } 

    @Override 
    public boolean onQueryTextSubmit(String query) { 
     accomodationAdapter.filterData(query); 
     expandAll(); 
     return false; 
    } 

     } 
관련 문제