1

我正在研究可擴展的練習。我曾經得到我自己的適配器來顯示子列表。但我無法獲得子視圖的價值。請幫助我。代碼是這樣的。在ExpandableListView中獲取子視圖的內容

AddPerson.java

import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ExpandableListView; 
import android.widget.ExpandableListView.OnChildClickListener; 
import android.widget.ExpandableListView.OnGroupClickListener; 
import android.widget.ExpandableListView.OnGroupCollapseListener; 
import android.widget.ExpandableListView.OnGroupExpandListener; 
import android.widget.Toast; 

public class AddPerson extends Activity{ 
    ExpListAdapter listAdapter; 
    ExpandableListView expListView; 
    List<String> listDataHeader; 
    HashMap<String, List<String>> listDataChild; 

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

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

     // preparing list data 
     prepareListData(); 

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

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

     expListView.setOnGroupClickListener(new OnGroupClickListener() { 

      @Override 
      public boolean onGroupClick(ExpandableListView parent, View v, 
        int groupPosition, long id) { 
       // TODO Auto-generated method stub 
       return false; 
      } 
     }); 

     expListView.setOnGroupExpandListener(new OnGroupExpandListener() { 

      @Override 
      public void onGroupExpand(int groupPosition) { 
       // TODO Auto-generated method stub 

      } 
     }); 

     // Listview Group collasped listener 
     expListView.setOnGroupCollapseListener(new OnGroupCollapseListener() { 

      public void onGroupCollapse(int groupPosition) { 
//    Toast.makeText(getApplicationContext(), 
//      listDataHeader.get(groupPosition) + " Collapsed", 
//      Toast.LENGTH_SHORT).show(); 

      } 
     }); 

     // 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(
         getApplicationContext(), 
         listDataHeader.get(groupPosition) 
           + " : " 
           + listDataChild.get(
             listDataHeader.get(groupPosition)).get(
             childPosition), Toast.LENGTH_SHORT) 
         .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("FREQUENTLY_CONTACT_WITH"); 
     listDataHeader.add("GROUPS"); 
     listDataHeader.add("CONTACT_BOOK"); 

     // Adding child data 
     List<String> FREQUENTLY_GOZZYPED_WITH = new ArrayList<String>(); 
     FREQUENTLY_GOZZYPED_WITH.add("JOHN "); 
     FREQUENTLY_GOZZYPED_WITH.add("RISHIKA"); 
     FREQUENTLY_GOZZYPED_WITH.add("AMIT"); 


     List<String> GROUPS = new ArrayList<String>(); 
     GROUPS.add("OFFICE GROUP"); 
     GROUPS.add("CLUB GROUP"); 
     GROUPS.add("FAMILY"); 
     GROUPS.add("CHAT"); 


     List<String> CONTACT_BOOK = new ArrayList<String>(); 
     CONTACT_BOOK.add("AMIT"); 
     CONTACT_BOOK.add("MAA"); 
     CONTACT_BOOK.add("PAA"); 
     CONTACT_BOOK.add("AAKRITI"); 
     CONTACT_BOOK.add("PUJA"); 

     listDataChild.put(listDataHeader.get(0),FREQUENTLY_GOZZYPED_WITH); // Header, Child data 
     listDataChild.put(listDataHeader.get(1), GROUPS); 
     listDataChild.put(listDataHeader.get(2), CONTACT_BOOK); 
     } 
    } 

ExpListAdapter.java

import java.util.HashMap; 
import java.util.List; 

import android.content.Context; 
import android.graphics.Typeface; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseExpandableListAdapter; 
import android.widget.TextView; 

public class ExpListAdapter extends BaseExpandableListAdapter{ 


    private Context _context; 
    private List<String> _listDataHeader; // header titles 
    // child data in format of header title, child title 
    private HashMap<String, List<String>> _listDataChild; 

    public ExpListAdapter(Context context, List<String> listDataHeader, 
      HashMap<String, List<String>> listChildData) { 
     this._context = context; 
     this._listDataHeader = listDataHeader; 
     this._listDataChild = listChildData; 
    } 

    @Override 
    public Object getChild(int groupPosition, int childPosition) { 
     // TODO Auto-generated method stub 
     return this._listDataChild.get(this._listDataHeader.get(groupPosition)) 
       .get(childPosition); 
    } 

    @Override 
    public long getChildId(int groupPosition, int childPosition) { 
     // TODO Auto-generated method stub 
     return childPosition; 
    } 

    @Override 
    public View getChildView(int groupPosition, int childPosition, 
      boolean isLastChild, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 
     final String childText = (String) getChild(groupPosition, childPosition); 

     if (convertView == null) { 
      LayoutInflater infalInflater = (LayoutInflater) this._context 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      convertView = infalInflater.inflate(R.layout.list_item, null); 
     } 

     TextView txtListChild = (TextView) convertView 
       .findViewById(R.id.lblListItem); 

     txtListChild.setText(childText); 
     return convertView; 
    } 

    @Override 
    public int getChildrenCount(int groupPosition) { 
     // TODO Auto-generated method stub 
     return this._listDataChild.get(this._listDataHeader.get(groupPosition)) 
       .size(); 
    } 

    @Override 
    public Object getGroup(int groupPosition) { 
     // TODO Auto-generated method stub 
     return this._listDataHeader.get(groupPosition); 
    } 

    @Override 
    public int getGroupCount() { 
     // TODO Auto-generated method stub 
     return this._listDataHeader.size(); 
    } 

    @Override 
    public long getGroupId(int groupPosition) { 
     // TODO Auto-generated method stub 
     return groupPosition; 
    } 

    @Override 
    public View getGroupView(int groupPosition, boolean isExpanded, 
      View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 
     String headerTitle = (String) getGroup(groupPosition); 
     if (convertView == null) { 
      LayoutInflater infalInflater = (LayoutInflater) this._context 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      convertView = infalInflater.inflate(R.layout.list_group, null); 
     } 

     TextView lblListHeader = (TextView) convertView 
       .findViewById(R.id.lblListHeader); 
     lblListHeader.setTypeface(null, Typeface.BOLD); 
     lblListHeader.setText(headerTitle); 

     return convertView; 
    } 

    @Override 
    public boolean hasStableIds() { 
     // TODO Auto-generated method stub 
     return false; 
    } 

    @Override 
    public boolean isChildSelectable(int groupPosition, int childPosition) { 
     // TODO Auto-generated method stub 
     return false; 
    } 
} 
+0

爲'ExpListAdapter'類 – guptakvgaurav

+0

@GauravGupta郵編:我已經添加了適配器。請看看它。 – user2955143

回答

1

試試這個裏面onChildClick:

TextView tv = (TextView)v.findViewById(R.id.lblListItem); 
String value = tv.getText().toString(); 
相關問題