【问题标题】:ExpandableListViewAdapter with List containing nested List带有包含嵌套列表的列表的 ExpandableListViewAdapter
【发布时间】:2020-04-13 15:54:33
【问题描述】:

我正在尝试为这样的模型写ExpandableListViewAdapter

这是我的GetCheapestResponseType.class

public class GetCheapestResponseType {

    List<Fares> fares;

}

这是我已经做过的,我不知道如何扩展ExpandableListViewAdapter的构造函数只传递List&lt;GetCheapestResponseType&gt;

public class ExpandableListViewAdapter extends BaseExpandableListAdapter {

    private Context context;

    // group titles
    private List<GetCheapestResponseType> listDataGroup;

    // child data
    private List<Fares> listDataChild;

    public ExpandableListViewAdapter(Context context, List<GetCheapestResponseType> listDataGroup) {
        this.context = context;
        this.listDataGroup = listDataGroup;
        this.listDataChild = listDataGroup.get( /* what should be here */ ).getFares();
    }

    @Override
    public Object getChild(int groupPosition, int childPosititon) {
        return this.listDataChild.get(groupPosition);
    }

    @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) {

        String departureCity = listDataChild.get(childPosition).getOutbound().getDepartureAirport().getName();
        String arrivalCity = listDataChild.get(childPosition).getOutbound().getArrivalAirport().getName();

        if (convertView == null) {
            LayoutInflater layoutInflater = (LayoutInflater) this.context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = layoutInflater.inflate(R.layout.flight_data_item, null);
        }

        TextView departureCityTextView = convertView.findViewById(R.id.departureCityTextView);
        TextView arrivalCityTextView = convertView.findViewById(R.id.arrivalCityTextView);

        departureCityTextView.setText(departureCity);
        arrivalCityTextView.setText(arrivalCity);
    }

    @Override
    public int getChildrenCount(int groupPosition) {
        return this.listDataGroup.get(groupPosition).getFares().size();
    }

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

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

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

    @Override
    public View getGroupView(int groupPosition, boolean isExpanded,
                             View convertView, ViewGroup parent) {
        String headerTitle = (String) getGroup(groupPosition);
        if (convertView == null) {
            LayoutInflater layoutInflater = (LayoutInflater) this.context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = layoutInflater.inflate(R.layout.flight_data_group, null);
        }

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

        return convertView;
    }
}

【问题讨论】:

    标签: android expandablelistview


    【解决方案1】:

    无法完全复制您的数据列表。下面的适配器显示了如何处理类似的列表。希望对您有所帮助!

    public class ExpandableListViewAdapter extends BaseExpandableListAdapter {
    
    public class GetCheapestResponseType{
        // String departureCity;
        List<Fares> fares;
    
        // public String getDepartureCity() {
        //     return departureCity;
        // }
    }
    
    public class Fares{
        String departureAirport, arrivalAirport;
    
        public String getDepartureAirport() {
            return departureAirport;
        }
    
        public String getArrivalAirport() {
            return arrivalAirport;
        }
    }
    
    private Context context;
    
    private List<GetCheapestResponseType> listData;
    
    public ExpandableListViewAdapter(Context context, List<GetCheapestResponseType> listData) {
        this.context = context;
        this.listData = listData;
    }
    
    @Override
    public Fares getChild(int groupPosition, int childPosition) {
        return this.listData.get(groupPosition).fares.get(childPosition);
    }
    
    @Override
    public View getChildView(int groupPosition, final int childPosition,
                             boolean isLastChild, View convertView, ViewGroup parent) {
    
        String departureCity = getChild(groupPosition, childPosition).getDepartureAirport();
        String arrivalCity = getChild(groupPosition, childPosition).getArrivalAirport();
    
        if (convertView == null) {
            LayoutInflater layoutInflater = (LayoutInflater) this.context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = layoutInflater.inflate(R.layout.flight_data_item, null);
        }
        TextView departureCityTextView = convertView.findViewById(R.id.departureCityTextView);
        TextView arrivalCityTextView = convertView.findViewById(R.id.arrivalCityTextView);
        departureCityTextView.setText(departureCity);
        arrivalCityTextView.setText(arrivalCity);
    
        return convertView;
    }
    
    @Override
    public boolean isChildSelectable(int i, int i1) {
        return false;
    }
    
    @Override
    public int getChildrenCount(int groupPosition) {
        return this.listData.get(groupPosition).fares.size();
    }
    
    @Override
    public GetCheapestResponseType getGroup(int groupPosition) {
        return this.listData.get(groupPosition);
    }
    
    @Override
    public int getGroupCount() {
        return this.listData.size();
    }
    
    @Override
    public long getGroupId(int groupPosition) {
        return groupPosition;
    }
    
    @Override
    public View getGroupView(int groupPosition, boolean isExpanded,
                             View convertView, ViewGroup parent) {
        // String headerTitle = getGroup(groupPosition).getDepartureCity();
        String headerTitle = getGroup(groupPosition).fares.get(0).getDepartureAirport();
    
        if (convertView == null) {
            LayoutInflater layoutInflater = (LayoutInflater) this.context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = layoutInflater.inflate(R.layout.flight_data_group, null);
        }
        TextView departureCityTextViewGroup = convertView.findViewById(R.id.departureCityTextViewGroup);
        departureCityTextViewGroup.setTypeface(null, Typeface.BOLD);
        departureCityTextViewGroup.setText(headerTitle);
    
        return convertView;
    }
    
    @Override
    public long getChildId(int groupPosition, int childPosition) {
        return childPosition;
    }
    
    @Override
    public boolean hasStableIds() {
        return false;
    }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-06
      • 2020-02-04
      • 1970-01-01
      • 2018-02-10
      • 2012-10-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多