为可扩展列表视图设置适配器

时间:2015-05-04 07:45:36

标签: android listview android-adapter expandablelistadapter expandable

我尝试为可扩展列表视图设置适配器,如下所示:

public class CompanyProfileAdapter extends BaseExpandableListAdapter {

Context context;
ArrayList<SearchListView> searchresultList;
ArrayList<IndustryListView> industryListViews;

public CompanyProfileAdapter(Context context,
        ArrayList<IndustryListView> industryListViews,
        ArrayList<SearchListView> searchresultList) {
    // TODO Auto-generated constructor stub
    this.context = context;
    this.searchresultList = searchresultList;
    this.industryListViews = industryListViews;
}

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

这里我得到以下错误:&#34;类型ArrayList中的方法get(int)不适用于参数(SearchListView)&#34;

在上面代码的最后一行。任何人都可以帮我解决这个问题。

2 个答案:

答案 0 :(得分:0)

拥有更多信息确实会很好。通常,当您报告错误时,请尝试从logcat复制/粘贴此错误的堆栈跟踪。

无论如何,我感觉你的问题正在发生,因为你没有正确更新方法&#34; getChildrenCount&#34;和&#34; getGroupCount&#34;。

在这种方法中,您应该使用列表中的长度进行更新:

@Override
public int getChildrenCount(int groupPosition) 
{
    return searchresultList.size();
}


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

我将industryListViews作为组/标题列表,将searchresultList作为子列表。

答案 1 :(得分:0)

你正在使用两个不同的数组列表..我认为问题是。

    ArrayList<SearchListView> searchresultList;
    ArrayList<IndustryListView> industryListViews;

查看您遇到错误的代码。 你写了

return industryListViews.get(this.searchresultList.get(groupPosition)).get(childPosition);

实际上这种代码不适用于ArrayList。 您需要使用 HashMap ,例如private HashMap<String, ArrayList<String>> industryListViews;

有关此内容的详细信息,请参阅本教程 ExpandableListView