簡體   English   中英

如何使用單個適配器實現多級可擴展列表視圖?

[英]How to implement multilevel expandable list view with single adapter?

這是我的可擴展列表適配器調用

TableOfContentsAdapter adapter = new    TableOfContentsAdapter(TableOfContentsActivity.this,toCList);
mExpandableListViewTOC.setAdapter(adapter);

這是我的適配器實現

class TableOfContentsAdapter extends BaseExpandableListAdapter {

private Context context;
private List<TOCLink> tocLinks;

public TableOfContentsAdapter(Context context, List<TOCLink> tocLinks) {
    this.context = context;
    this.tocLinks = tocLinks;
}

@Override
public int getChildrenCount(int groupPosition) {
    return tocLinks.get(groupPosition).getTocLinks().size();
}

@Override
public Object getGroup(int groupPosition) {
    return tocLinks.get(groupPosition);
}

@Override
public int getGroupCount() {
    return tocLinks.size();
}

@Override
public long getGroupId(int groupPosition) {
    return (long) (groupPosition * 1024);
}

@Override
public Object getChild(int groupPosition, int childPosition) {
    List<TOCLink> childTocLinks = tocLinks.get(groupPosition).getTocLinks();
    return childTocLinks.get(childPosition);
}

@Override
public long getChildId(int groupPosition, int childPosition) {
    return (long) (groupPosition * 1024 + childPosition);
}

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

@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
    return true;
}

@Override
public View getGroupView(int groupPosition, boolean b, View convertView, ViewGroup viewGroup) {
    TOCLink tocLink = (TOCLink) getGroup(groupPosition);
    if (convertView == null) {
        LayoutInflater inflater = (LayoutInflater) this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.list_header, null);
    }

    TextView groupHeader = (TextView) convertView.findViewById(R.id.header);
    groupHeader.setText(tocLink.getSectionTitle());

    return convertView;
}

@Override
public View getChildView(int groupPosition, int childPosition, boolean b, View convertView, ViewGroup viewGroup) {
    TOCLink tocLink = (TOCLink) getChild(groupPosition, childPosition);
    if (convertView == null) {
        LayoutInflater inflater = (LayoutInflater) this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.list_item, null);
    }

    TextView childItem = (TextView) convertView.findViewById(R.id.item);
    childItem.setText(tocLink.getSectionTitle());

    /*TOCLink tocLink1 = tocLinks.get(groupPosition).getTocLinks().get(childPosition);
    if (tocLink1.getTocLinks().size() > 0) {
        new TableOfContentsAdapter(context, tocLink1.getTocLinks());
    }*/
    return convertView;
}

}

我想用單個適配器實現多級可擴展列表視圖。 這里的問題是我能夠進入1級而不是更進一步。

怎么解決這個問題?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM