Android : Expandable list adapter

395 Views Asked by At

I've got problem with adapter to present data. I've got object with few list inside it and need to display data from them. I need to present :

date * flight number * duration * regular fare price with currency

and here are my model classes :

 public class Currency implements Serializable {

        private String currency;
        private Integer currPrecision;
        private List<Trip> trips = null;
        private String serverTimeUTC;

public class Trip {

    private String origin;
    private String originName;
    private String destination;
    private String destinationName;
    private List<Date> dates = null;

public class Date {
private String dateOut;
private List<Flight> flights = null;

public class Flight {
private String flightNumber;
private List<String> time = null;
private List<String> timeUTC = null;
private String duration;
private Integer faresLeft;
private String flightKey;
private Integer infantsLeft;
private RegularFare regularFare;
private BusinessFare businessFare;
private LeisureFare leisureFare;

I try to deal it with expandable list adapter but no succeeded. Here's my adapter class :

public class MyExpandableAdapter extends BaseExpandableListAdapter {

private Activity activity;
private ArrayList<ArrayList<Flight>> childtems;
private LayoutInflater inflater;
private ArrayList<Date> parentItems;
private ArrayList<Flight> child;

public MyExpandableAdapter(ArrayList<Date> parents,ArrayList<ArrayList<Flight>> childern) {
    this.parentItems = parents;
    this.childtems = childern;
}

public void setInflater(LayoutInflater inflater, Activity activity) {
    this.inflater = inflater;
    this.activity = activity;
}

@Override
public View getChildView(int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {

    child = (ArrayList<Flight>) childtems.get(groupPosition);

    TextView textView = null;

    if (convertView == null) {
        convertView = inflater.inflate(R.layout.result_row, null);
    }

    textView = (TextView) convertView.findViewById(R.id.listTitle);
    textView.setText(child.get(childPosition).getDuration());

    convertView.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View view) {

        }
    });

    return convertView;
}

@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {

    if (convertView == null) {
        convertView = inflater.inflate(R.layout.result_row, null);
    }

    ((CheckedTextView) convertView).setText(parentItems.get(groupPosition).getDateOut());
    ((CheckedTextView) convertView).setChecked(isExpanded);

    return convertView;
}

@Override
public Object getChild(int groupPosition, int childPosition) {
    return null;
}

@Override
public long getChildId(int groupPosition, int childPosition) {
    return 0;
}

@Override
public int getChildrenCount(int groupPosition) {
    return ((ArrayList<Flight>) childtems.get(groupPosition)).size();
}

@Override
public Object getGroup(int groupPosition) {
    return null;
}

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

@Override
public void onGroupCollapsed(int groupPosition) {
    super.onGroupCollapsed(groupPosition);
}

@Override
public void onGroupExpanded(int groupPosition) {
    super.onGroupExpanded(groupPosition);
}

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

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

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

}

My Activity class:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_result);
        ButterKnife.bind(this);
        if(getIntent() != null) {
            Intent intent = getIntent();
            String currencyString = intent.getStringExtra("Currency");
            Gson gson = new Gson();
            Currency currency = gson.fromJson(currencyString, Currency.class);
            trips = new ArrayList<>();
            trips = currency.getTrips();
            for(Trip trip :trips) {
                ArrayList<Date> date = trip.getDates();
                dates=date;
                for(Date dateFlight: dates) {
                   flights.add(dateFlight.getDateOut());
                }
            }
            adapter = new MyExpandableAdapter(dates,flights);
            mTripsRv.setAdapter(adapter);

        }

Thanks in advance for help!! :)

0

There are 0 best solutions below