У меня есть Viewpager
с 2 страницами, на странице 1 Я заполняю форму и прокручиваю страницу 2, у которой есть expandableList
. Я использую пользовательский адаптер, как показано ниже.Пользовательский расширяемый BaseExpandableListAdapter getGroupView или getChildView никогда не набирается
Я включил расширяемый listview
и еще одну кнопку внутри макета.
Когда я сажусь на эту новую страницу, я вижу пустой макет вместе с кнопкой, расширяемый список никогда не появляется.
Я проверил и выяснил, что getGroupCount
возвращает размер, эквивалентный размеру данных arrayList
. Таким образом, проблема не является пустой.
При дальнейших анализах я выяснил, что getGroupView
, а также getChildView
никогда не вызывается, я добавил несколько операторов журнала для отладки в этих методах, они никогда не печатаются. Однако вызывается конструктор, так что getGroupCoun
возвращает правильные значения. Является ли моя реализация правильной?
public class FareStageExpandableListAdapter extends BaseExpandableListAdapter
{
private Context context;
private LayoutInflater inflater;
private ArrayList<TripTimings> data;
private SimpleDateFormat formatter;
private EditText fareField;
private TextView headerText;
private TextView childText;
public FareStageExpandableListAdapter(Context context,
ArrayList<TripTimings> data)
{
Log.d("FareStageExADapter", "Constructor called");
this.context = context;
this.inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.data = data;
this.formatter = new SimpleDateFormat("HH:mm");
}
@Override
public int getGroupCount()
{
return data.size();
}
@Override
public int getChildrenCount(int groupPosition)
{
return data.size() - 1 - groupPosition;
}
@Override
public Object getGroup(int groupPosition)
{
return data.get(groupPosition);
}
@Override
public Object getChild(int groupPosition, int childPosition)
{
return data.get(groupPosition + childPosition);
}
@Override
public long getGroupId(int groupPosition)
{
return data.get(groupPosition).hashCode();
}
@Override
public long getChildId(int groupPosition, int childPosition)
{
return data.get(groupPosition + childPosition).hashCode() + 5;
}
@Override
public boolean hasStableIds()
{
// TODO Auto-generated method stub
return true;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parentView)
{
TripTimings parent = data.get(groupPosition);
if (convertView == null)
{
convertView = inflater.inflate(R.layout.fareadd_expanded_parent,
parentView, false);
}
headerText = ((TextView) convertView.findViewById(R.id.originText));
Log.d("Setting header text ", parent.getStop().getStop_name());
headerText.setText(parent.getStop().getStop_name());
return convertView;
}
@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup childView)
{
final TripTimings child = data.get(groupPosition + childPosition);
if (convertView == null)
{
convertView = inflater.inflate(R.layout.fareadd_expanded_child,
childView, false);
}
childText = ((TextView) convertView.findViewById(R.id.destinationText));
Log.d("Setting child text ", child.getStop().getStop_name());
childText.setText(child.getStop().getStop_name());
return convertView;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition)
{
// TODO Auto-generated method stub
return false;
}
}