1

我在一個片段中創建了可展開列表視圖,它的工作正常。不過,我想在可展開的listview子項被點擊時開始一個活動。我找了幾個小時試圖找到解決辦法,但我找不到它。有人請爲此問題提供代碼。當可展開列表視圖項目/孩子點擊時如何啓動/打開一個活動,以及如何在這裏執行Toast

import android.R.color; 
import android.app.Fragment; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseExpandableListAdapter; 
import android.widget.ExpandableListView; 
import android.widget.ExpandableListView.OnChildClickListener; 
import android.widget.TextView; 
import android.widget.Toast; 

     // This is a listfragment class 
     public class Categories extends Fragment { 

      @Override 
      public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
       View v = inflater.inflate(R.layout.categories, null); 
       ExpandableListView elv = (ExpandableListView) v.findViewById(R.id.expandableListView1); 
       elv.setAdapter(new SavedTabsListAdapter()); 
       return v; 
      } 

      public class SavedTabsListAdapter extends BaseExpandableListAdapter { 

       private String[] groups = { "Men", "Women"}; 

       private String[][] children = { 
        { "Men's accessories", "Men's trousers"}, 
        { "Dresses", "Women's trousers"} 
       }; 

       @Override 
       public int getGroupCount() { 
        return groups.length; 
       } 

       @Override 
       public int getChildrenCount(int i) { 
        return children[i].length; 
       } 

       @Override 
       public Object getGroup(int i) { 
        return groups[i]; 
       } 

       @Override 
       public Object getChild(int i, int i1) { 
        return children[i][i1]; 
       } 

       @Override 
       public long getGroupId(int i) { 
        return i; 
       } 

       @Override 
       public long getChildId(int i, int i1) { 
        return i1; 
       } 

       @Override 
       public boolean hasStableIds() { 
        return true; 
       } 

       @Override 
       public View getGroupView(int i, boolean b, View view, ViewGroup viewGroup) { 
        TextView textView = new TextView(CategoriesFragment.this.getActivity()); 
        textView.setText(getGroup(i).toString()); 
        return textView; 
       } 

       @Override 
       public View getChildView(int i, int i1, boolean b, View view, ViewGroup viewGroup) { 
        TextView textView = new TextView(CategoriesFragment.this.getActivity()); 
        textView.setText(getChild(i, i1).toString()); 
        return textView; 
       } 

       @Override 
       public boolean isChildSelectable(int i, int i1) { 
        return true; 
       } 

      } 

     Intent k; 

     @Override 
     public boolean onChildClick(ExpandableListView parent, View v, 
       int groupPosition, int childPosition, long id) { 
      switch(childPosition){ 
      case 0: 
       k = new Intent(getActivity().getApplicationContext(), Baby.class); 
       break; 
      case 1: 
       k = new Intent(getActivity().getApplicationContext(), Baby1.class); 
       break; 
      } 
      startActivity(k); 
      return true; 
     } 

     } 
+0

這是你所需要的http://開發商。 android.com/reference/android/widget/ExpandableListView.OnChildClickListener.html? – btse

+0

感謝您的幫助,但是我仍然無法做到。如何爲每個項目添加條件?你能提供一些進一步的細節,或者可能是代碼請。提前致謝。 – Kabil

+0

在getChildView函數中,您需要添加/刪除onClicklistener到基於位置或數據的textview。在那onclicklistener開始活動 –

回答

1

當您單擊childposition你在OnChildClick功能得到什麼子元素?

而你在哪裏設置了ChildClickListener?如果你沒有這個代碼後置已經然後ExpandableListView elv = (ExpandableListView) v.findViewById(R.id.expandableListView1);此線elv.setOnChildClickListener("your_listener");

還爲最佳實踐,你可以寫你的聽衆上方和OnChildClick功能以這樣的方式

1日刪除您OnChildClick和OnChildClickListener(如果有的話)然後把你的代碼在地方的上述elv.setOnChildClickListener("your_listener");這way-

elv.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {  
       @Override 
       public boolean onChildClick(ExpandableListView parent, View v, 
         int groupPosition, int childPosition, long id) { 
        switch(childPosition){ 
         case 0: 
          k = new Intent(getActivity().getApplicationContext(), Baby.class); 
          break; 
         case 1: 
          k = new Intent(getActivity().getApplicationContext(), Baby1.class); 
          break; 
         } 
         startActivity(k); 
         return true; 
       }   
}); 

讓我們知道,如果你仍然面臨的任何問題

+0

謝謝你的工作很好 – Kabil

+0

很高興我幫你:) – thegiga

相關問題