2016-05-10 4 views
0

У меня есть пользовательский 3 уровня ExpandableListView с 2 пользовательскими ExpandableListAdapter.Как вертикально расширить или заполнить экран с помощью специального ExpandedListView

В ParentAdapter внутри getChildView я создаю экземпляр CustomExpandableListView и установкой Моя ChildAdapter к нему так:

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

    CustomExpandableListView subObjects = (CustomExpandableListView) convertView; 

    if (convertView == null) { 
     subObjects = new CustomExpandableListView(activity); 
    } 
    ChildAdapter adapter = new ChildAdapter(activity, item, subObjects); 
    subObjects.setAdapter(adapter); 

    return subObjects; 
} 

Некоторые скриншоты:

Это то, что я получаю, когда мои Китай регионы скрыть:

Collapsed list

И это один, когда они разлагаются:

Expanded list

Так мой ExpandableListView занимает только часть экрана (я пометил его с красными линиями), другие вещи исчезнуть, у меня есть для прокрутки, чтобы получить к нему. И мой список расширяется вертикально только тогда, когда я добавляю элементы в мой уровень 1 (Азия и Европа). Я понимаю, почему - потому что они являются элементами стандартного ExpandableListView

И я знаю, как удалить верхнее и левое поле - я установил paddings в своих макетах.

Но как я могу заставить свой CustomExpendableListView расширяться вертикально?

Вот мой CustomExpendableListView:

public class CustomExpandableListView extends ExpandableListView { 

public CustomExpandableListView(Context context) { 
    super(context); 
} 

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
    widthMeasureSpec = MeasureSpec.makeMeasureSpec(990, MeasureSpec.AT_MOST); 
    heightMeasureSpec = MeasureSpec.makeMeasureSpec(1600, MeasureSpec.AT_MOST); 
    super.onMeasure(widthMeasureSpec, heightMeasureSpec); 
} 
} 

Внутри моей activity_main макет У меня есть только один RelativeLayout, ширина и высота в match_parent состоянии.

Это, как я инициализировать мой CustomExpandableListView в MainActivity:

RelativeLayout parent = (RelativeLayout) findViewById(R.id.relativeContainer); 
    list = new CustomExpandableListView(this); 
    ParentAdapter adapter = new ParentAdapter(this, objectsLvl1); 
    list.setAdapter(adapter); 

ответ

0

Ну, на самом деле я нашел какое-то решение.

Я поставил ExpandableListView внутри своего RelativeLayout в activity_main.

и переменил реализация внутри MainActivity:

ExpandableListView list = (ExpandableListView) findViewById(R.id.expandableListView_Parent); 

    if (list != null) { 
     ParentAdapter adapter = new ParentAdapter(this, objectsLvl1); 
     list.setAdapter(adapter); 
    } 

Это решается мой вопрос, теперь у меня есть полный экран ExpandableList.

Но было бы неплохо, если бы кто-нибудь сказал мне, что делать, если я хочу сделать это через свой собственный CustomExpandableList. Потому что я до сих пор не знаю, как это сделать.

Смежные вопросы