我有一個虛擬的JSON數據,它有一個大小爲8的ArrayList。它們必須填充在expandableListView中,但它只顯示第一組。因爲當我調試它時,getGroupView總是以groupPosition參數調用爲零。ExpandableListView調用getGroupView總是以groupPosition參數作爲0
有很多關於使用ArrayLists填充ExpandableListViews的示例,我的代碼與它們幾乎相同。但我不明白爲什麼會發生這種情況。
任何幫助將非常感激
我ExpandableListViewApdater:
public class ElvProgramCourseListAdapter extends BaseExpandableListAdapter {
private Activity activity;
private ProgramOnly programOnly;
public ElvProgramCourseListAdapter(Activity activity, ProgramOnly programOnly) {
this.activity = activity;
this.programOnly = programOnly;
}
@Override
public int getGroupCount() {
return programOnly.getProgramSummary().getProgramSetList().size();
}
@Override
public int getChildrenCount(int groupPosition) {
NativeProgramSet item = programOnly.getProgramSummary().getProgramSetList().get(groupPosition);
if (item.getId() != null) {
return item.getCourseIdList().size();
} else {
return 0;
}
}
@Override
public Object getGroup(int groupPosition) {
return programOnly.getProgramSummary().getProgramSetList().get(groupPosition);
}
@Override
public Object getChild(int groupPosition, int childPosition) {
NativeProgramSet item = programOnly.getProgramSummary().getProgramSetList().get(groupPosition);
if (item.getId() != null) {
return item.getCourseIdList().get(childPosition);
} else {
return null;
}
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
ImageView imgContentListThumbnail;
ImageView imgContentListRibbon;
ImageView imgTLIcon;
ImageView imgKilitIcon;
TextView txtContentListTitle;
TextView txtContentListDescription;
ImageView imgContentListDetail;
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.item_contentlist, parent, false);
imgContentListThumbnail = (ImageView) convertView.findViewById(R.id.imgContentListThumbnail);
imgContentListRibbon = (ImageView) convertView.findViewById(R.id.imgContentListRibbon);
imgTLIcon = (ImageView) convertView.findViewById(R.id.imgTLIcon);
imgKilitIcon = (ImageView) convertView.findViewById(R.id.imgKilitIcon);
txtContentListTitle = (TextView) convertView.findViewById(R.id.txtContentListTitle);
Fonts.setTypeface(Fonts.BOLD, txtContentListTitle, activity.getBaseContext());
txtContentListDescription = (TextView) convertView.findViewById(R.id.txtContentListDescription);
imgContentListDetail = (ImageView) convertView.findViewById(R.id.imgContentListDetail);
convertView.setTag(new ViewHolder(imgContentListThumbnail, imgContentListRibbon, imgTLIcon, imgKilitIcon, txtContentListTitle, txtContentListDescription, imgContentListDetail));
} else {
ViewHolder viewHolder = (ViewHolder) convertView.getTag();
imgContentListThumbnail = viewHolder.imgContentListThumbnail;
imgContentListRibbon = viewHolder.imgContentListRibbon;
imgTLIcon = viewHolder.imgTLIcon;
imgKilitIcon = viewHolder.imgKilitIcon;
txtContentListTitle = viewHolder.txtContentListTitle;
txtContentListDescription = viewHolder.txtContentListDescription;
imgContentListDetail = viewHolder.imgContentListDetail;
}
NativeProgramSet nativeProgramSet = (NativeProgramSet) getGroup(groupPosition);
if(nativeProgramSet.getId() != null) {
convertView.setBackgroundColor(Color.parseColor("#e5e5e5"));
imgContentListThumbnail.setVisibility(View.GONE);
imgContentListRibbon.setVisibility(View.GONE);
imgTLIcon.setVisibility(View.GONE);
imgKilitIcon.setVisibility(View.GONE);
txtContentListDescription.setVisibility(View.GONE);
if(isExpanded) {
imgContentListDetail.setImageResource(R.drawable.accordion_close_icon);
} else {
imgContentListDetail.setImageResource(R.drawable.accordion_open_icon);
}
txtContentListTitle.setText(nativeProgramSet.getName());
} else {
convertView.setBackgroundColor(Color.WHITE);
imgContentListThumbnail.setVisibility(View.VISIBLE);
txtContentListDescription.setVisibility(View.VISIBLE);
imgContentListDetail.setImageResource(R.drawable.top_search_filter_button_icon);
Course course = null;
for(Course item : programOnly.getProgramSummary().getCourseList()) {
if(item.getId().equals(nativeProgramSet.getCourseIdList().get(0))) {
course = item;
break;
}
}
if(course != null) {
convertView = fillListItem(course, imgContentListThumbnail, imgContentListRibbon, imgTLIcon, imgKilitIcon, txtContentListTitle, txtContentListDescription, imgContentListDetail, convertView);
}
}
return convertView;
}
@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
ImageView imgContentListThumbnail;
ImageView imgContentListRibbon;
ImageView imgTLIcon;
ImageView imgKilitIcon;
TextView txtContentListTitle;
TextView txtContentListDescription;
ImageView imgContentListDetail;
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.item_contentlist, parent, false);
imgContentListThumbnail = (ImageView) convertView.findViewById(R.id.imgContentListThumbnail);
imgContentListRibbon = (ImageView) convertView.findViewById(R.id.imgContentListRibbon);
imgTLIcon = (ImageView) convertView.findViewById(R.id.imgTLIcon);
imgKilitIcon = (ImageView) convertView.findViewById(R.id.imgKilitIcon);
txtContentListTitle = (TextView) convertView.findViewById(R.id.txtContentListTitle);
Fonts.setTypeface(Fonts.BOLD, txtContentListTitle, activity.getBaseContext());
txtContentListDescription = (TextView) convertView.findViewById(R.id.txtContentListDescription);
imgContentListDetail = (ImageView) convertView.findViewById(R.id.imgContentListDetail);
convertView.setTag(new ViewHolder(imgContentListThumbnail, imgContentListRibbon, imgTLIcon, imgKilitIcon, txtContentListTitle, txtContentListDescription, imgContentListDetail));
} else {
ViewHolder viewHolder = (ViewHolder) convertView.getTag();
imgContentListThumbnail = viewHolder.imgContentListThumbnail;
imgContentListRibbon = viewHolder.imgContentListRibbon;
imgTLIcon = viewHolder.imgTLIcon;
imgKilitIcon = viewHolder.imgKilitIcon;
txtContentListTitle = viewHolder.txtContentListTitle;
txtContentListDescription = viewHolder.txtContentListDescription;
imgContentListDetail = viewHolder.imgContentListDetail;
}
Long courseId = (Long) getChild(groupPosition, childPosition);
imgContentListThumbnail.setVisibility(View.VISIBLE);
txtContentListDescription.setVisibility(View.VISIBLE);
imgContentListDetail.setImageResource(R.drawable.top_search_filter_button_icon);
Course course = null;
for(Course item : programOnly.getProgramSummary().getCourseList()) {
if(item.getId().equals(courseId)) {
course = item;
break;
}
}
if(course != null) {
convertView = fillListItem(course, imgContentListThumbnail, imgContentListRibbon, imgTLIcon, imgKilitIcon, txtContentListTitle, txtContentListDescription, imgContentListDetail, convertView);
}
return convertView;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
private static class ViewHolder {
public final ImageView imgContentListThumbnail;
public final ImageView imgContentListRibbon;
public final ImageView imgTLIcon;
public final ImageView imgKilitIcon;
public final TextView txtContentListTitle;
public final TextView txtContentListDescription;
public final ImageView imgContentListDetail;
public ViewHolder(ImageView imgContentListThumbnail, ImageView imgContentListRibbon, ImageView imgTLIcon, ImageView imgKilitIcon, TextView txtContentListTitle, TextView txtContentListDescription, ImageView imgContentListDetail) {
this.imgContentListThumbnail = imgContentListThumbnail;
this.imgContentListRibbon = imgContentListRibbon;
this.imgTLIcon = imgTLIcon;
this.imgKilitIcon = imgKilitIcon;
this.txtContentListTitle = txtContentListTitle;
this.txtContentListDescription = txtContentListDescription;
this.imgContentListDetail = imgContentListDetail;
}
}
private View fillListItem(final Course crs, ImageView imgContentListThumbnail, ImageView imgContentListRibbon, ImageView imgTLIcon, ImageView imgKilitIcon, TextView txtContentListTitle, TextView txtContentListDescription, ImageView imgContentListDetail, View convertView) {
//long stuff
}
}
編輯
ProgramOnly.class
public class ProgramOnly implements Serializable {
/**
*
*/
private static final long serialVersionUID = 75459834905648086L;
private String HtmlContent;
private Course currentCourse;
private Program program;
private int videoCount;
private int quizCount;
private int eLearningCount;
private ArrayList<Page> orderedRelatedContent;
private String KALTURA_SESSION_KEY;
private String KALTURA_PREVIEW_SESSION_KEY;
private String videoId;
private boolean isPublicAccess;
private ArrayList<Document> contentDocuments;
private CourseStatusMap courseStatusMap;
private CertificateStatusMap certificateStatus;
private String programAttendeeId;
private String attendeeId;
private int pdfCount;
private int pptCount;
private int htmlCount;
private int audioCount;
private int interval;
private ProgramStatus contentStatus;
private String urlForSocialSharing;
private boolean isContentMustBePurchased;
public Program getProgramSummary() {
return program;
}
//getter setter stuff
是'ProgramOnly'是你自定義的類嗎?然後請張貼課程代碼。 –
我認爲Rivu正走在正確的軌道上。在getGroupView中,您要求programOnly.size(),這讓我相信這裏有些東西。 – Paul
這是一個巨大的自定義類,其中也包括我自己的許多自定義類。正如你所看到的,我訪問ProgramSummary類對象,然後獲取ProgramSetList數組來填充它。你還想要課程代碼嗎? –