GridView внутри Расширяемый список в android

Я хочу поместить gridview с изображениями в расширяемый список … Я уже сделал это, но gridview не показывает весь элемент …

Как я могу адаптировать мой расширяемый дочерний список к размеру gridview?

АДАПТЕР СПИСОК

public class CustomListAdapter extends BaseExpandableListAdapter { String[] catg = { "Administração, Escritorio e Industria", "Cultura e Entretenimento", "Educação e Crianças", "Eventos e Estado do tempo", "Amigos, Familia e Habitações", "Multimédia", "Diversos", "Números e Letras", "Restaurantes e Hoteis", "Desporto, Saude e Beleza", "Lojas", "Turismo e Natureza", "Transportes" }; Context myctx; @Override public Object getChild(int groupPosition, int childPosition) { // TODO Auto-generated method stub return null; } @Override public long getChildId(int groupPosition, int childPosition) { return childPosition; } @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { ViewGroup item = getViewGroupChild(convertView, parent); GridView label = (GridView) item.findViewById(ipvc.estg.placebook.R.id.gridview); label.setAdapter(new GridAdapter(parent.getContext(), groupPosition+1)); return item; } private ViewGroup getViewGroupChild(View convertView, ViewGroup parent) { // The parent will be our ListView from the ListActivity if (convertView instanceof ViewGroup) { return (ViewGroup) convertView; } Context context = parent.getContext(); LayoutInflater inflater = LayoutInflater.from(context); ViewGroup item = (ViewGroup) inflater.inflate(ipvc.estg.placebook.R.layout.expandable_list_row, null); return item; } @Override public int getChildrenCount(int groupPosition) { return 1; } @Override public Object getGroup(int groupPosition) { return catg[groupPosition]; } @Override public int getGroupCount() { return catg.length; } @Override public long getGroupId(int groupPosition) { return groupPosition; } @Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { View item = getViewGroupGroup(convertView, parent); TextView text = (TextView) item.findViewById(android.R.id.text1); text.setText(catg[groupPosition]); return item; } private View getViewGroupGroup(View convertView, ViewGroup parent) { // The parent will be our ListView from the ListActivity if (convertView instanceof View) { return (View) convertView; } Context context = parent.getContext(); LayoutInflater inflater = LayoutInflater.from(context); View item1 = (View) inflater.inflate(android.R.layout.simple_expandable_list_item_1, null); return item1; } @Override public boolean hasStableIds() { // TODO Auto-generated method stub return false; } @Override public boolean isChildSelectable(int groupPosition, int childPosition) { // TODO Auto-generated method stub return true; } } 

LIST ROW LAYOUT

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout android:id="@+id/linearLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"> <GridView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/gridview" android:layout_width="fill_parent" android:layout_height="fill_parent" android:columnWidth="50dp" android:numColumns="auto_fit" android:verticalSpacing="10dp" android:horizontalSpacing="10dp" android:stretchMode="columnWidth" android:gravity="center" /> </LinearLayout> 

Solutions Collecting From Web of "GridView внутри Расширяемый список в android"

Я выполнил множество поисков самостоятельно для решения этой ситуации, но ничего не нашел до сих пор, поэтому я сделал обходной путь.

Это обходное решение предполагает, что вы знаете / можете получить ширину столбцов и высоту рендеринга ячейки сетки (размер dp, заданный в вашем макете xmls).

Вы должны вставить еще несколько строк внутри метода getChildView ExpandableListAdapter :

 @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { ViewGroup item = getViewGroupChild(convertView, parent); GridView label = (GridView) item.findViewById(ipvc.estg.placebook.R.id.gridview); label.setAdapter(new GridAdapter(parent.getContext(), groupPosition+1)); // initialize the following variables (i've done it based on your layout // note: rowHeightDp is based on my grid_cell.xml, that is the height i've // assigned to the items in the grid. final int spacingDp = 10; final int colWidthDp = 50; final int rowHeightDp = 20; // convert the dp values to pixels final float COL_WIDTH = getBaseContext().getResources().getDisplayMetrics().density * colWidthDp; final float ROW_HEIGHT = getBaseContext().getResources().getDisplayMetrics().density * rowHeightDp; final float SPACING = getBaseContext().getResources().getDisplayMetrics().density * spacingDp; // calculate the column and row counts based on your display final int colCount = (int)Math.floor((parentView.getWidth() - (2 * SPACING)) / (COL_WIDTH + SPACING)); final int rowCount = (int)Math.ceil((intValues.size() + 0d) / colCount); // calculate the height for the current grid final int GRID_HEIGHT = Math.round(rowCount * (ROW_HEIGHT + SPACING)); // set the height of the current grid label.getLayoutParams().height = GRID_HEIGHT; return item; } 

С добавлением выше я смог создать следующие отображаемые макеты:

Расширяемый список с сеткой - портрет

а также

Расширяемый список с сеткой - пейзаж

Надеюсь, это тоже поможет вам.

Все, что вам нужно сделать, это изменить GrideView с помощью ExpandableHeightGridView

И настроить XML с помощью

 android:isScrollContainer="false" 

И в коде

 expandableHeightGridView.setExpanded(true); 

Как насчет использования галереи вместо GridView? Проверьте это !

Попробуйте этот github полный исходный код просмотра расходного списка с gridview

https://github.com/coolwd10/ExpandablelistwithGirdview