所以我已經能夠顯示組文本,但是當我展開我不知道如何獲取子文本。擴展的列表視圖不顯示子對象
List<TeamObject> listDataDoc;
HashMap<TeamObject, List<DoctorObject>> listDataChildStaff;
將listDataDoc和ListDataChildStaff傳遞給我的適配器。在我的主要活動中:
listAdapter = new ExpandableListAdapter(this, listDataDoc, listDataChildStaff);
在此之前,我正在調用prepareListData();
private void prepareListData() {
listDataDoc = new ArrayList<>();
listDataChildStaff = new HashMap<>();
ArrayList<TeamObject> all = new ArrayList<>();
TeamObject adil = new TeamObject();
adil.setStaffName("Adil Patel");
adil.setStaffType(1);
listDataDoc.add(adil);
List<DoctorObject> adilGroup = new ArrayList<>();
DoctorObject cindy = new DoctorObject("Cindy G");
DoctorObject Bettina = new DoctorObject("Bettina");
adilGroup.add(cindy);
adilGroup.add(Bettina);
listDataChildStaff.put(listDataDoc.get(0),adilGroup);
我的適配器則是這樣的:
public class ExpandableListAdapter extends BaseExpandableListAdapter {
private Context _context;
private List<TeamObject> _listDataHeader; // header titles
private HashMap<TeamObject, List<DoctorObject>> _listDataChild;
//Keep track of checks
//ArrayList<ArrayList<Integer>> check_states = new ArrayList<ArrayList<Integer>>();
public ExpandableListAdapter(Context context, List<TeamObject> listDataHeader, HashMap<TeamObject, List<DoctorObject>> listChildData) {
this._context = context;
this._listDataHeader = listDataHeader;
this._listDataChild = listChildData;
}
@Override
public Object getChild(int groupPosition, int childPosititon) {
return this._listDataChild.get(this._listDataHeader.get(groupPosition))
.get(childPosititon);
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
@Override
public View getChildView(int groupPosition, final int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
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_create_team_child, null);
}
final CheckBox chk = (CheckBox) convertView.findViewById(R.id.checkBoxChild);
chk.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked == true){
//_listDataChild.get(childPosition)
}
}
}
);
//String test = String.valueOf(_listDataChild.containsKey("Adil"));
TextView txtListChild = (TextView) convertView
.findViewById(R.id.teamNameChild);
txtListChild.setText(childText);
return convertView;
}
@Override
public int getChildrenCount(int groupPosition) {
return this._listDataChild.get(this._listDataHeader.get(groupPosition))
.size();
}
@Override
public Object getGroup(int groupPosition) {
return this._listDataHeader.get(groupPosition);
}
@Override
public int getGroupCount() {
return this._listDataHeader.size();
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) this._context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.list_item_create_team, null);
}
TextView lblListHeader = (TextView) convertView
.findViewById(R.id.teamName);
lblListHeader.setTypeface(null, Typeface.BOLD);
lblListHeader.setText(_listDataHeader.get(groupPosition).getStaffName());
return convertView;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
}
現在,當我與運行代碼的應用程序,我最初得到這個:
大!然而,當我展開
我收到以下錯誤
FATAL EXCEPTION: main
Process: com.adilpatel.vitalengine, PID: 4493
java.lang.ClassCastException: com.adilpatel.vitalengine.expand.DoctorObject cannot be cast to java.lang.String
at com.adilpatel.vitalengine.Expand2.ExpandableListAdapter.getChildView(ExpandableListAdapter.java:54)
54號線:
final String childText = (String) getChild(groupPosition, childPosition);
我知道這是不對的,但林不知道如何從我的子對象的名稱。
什麼是DoctorObject \ –
@RobinDijkhof DoctorObject是具有名稱,專業和幾個對象更多的東西。基本上我如何指定我想.getName(); – Adilp