ListView and GridView are not meant to be embedded within one another (the same is true with ScrollView.) And when I say they are not meant to, it's not supported to do so.
On Fri, Dec 11, 2009 at 6:53 AM, Brion Emde <[email protected]> wrote: > Here's a simple program that puts a bunch of GridViews inside a > ListView. My original question was about how the list item that has no > GridView entries, or one row of entries, still has two rows. But, upon > further examination of the included program, the worse problem is that > the GridView items that have 3 rows are cut off. The ListView is not > giving enough space to include the entire height of the taller > GridView. > > Sometimes the GridViews with 3 rows can be scrolled, sometimes not. > The intention, in my real code, is to put out a variable length list > in a grid fashion and it mostly works, but for the scrolling that is > sometimes required. > > Is it possible to get the GridViews to come out full size, even at the > expense of all the item views in the ListView being larger? How could > I do that? > > ****** GridList.java ******* > > package com.example.gridlist; > > import java.util.ArrayList; > > import android.app.ListActivity; > import android.content.Context; > import android.os.Bundle; > import android.view.View; > import android.view.ViewGroup; > import android.widget.ArrayAdapter; > import android.widget.GridView; > import android.widget.LinearLayout; > import android.widget.TextView; > > public class GridList extends ListActivity { > > private static final String[] STRINGS = { > "one", > "two", > "three", > "four", > "five", > "six", > "seven", > "eight", > "nine", > "ten", > }; > > �...@override > public void onCreate(Bundle savedInstanceState) { > super.onCreate(savedInstanceState); > String[] satmp = {}; // These shouldn't be needed, but I get > a class cast exception > String[][] saatmp = {{}}; // if I use ArrayList.toArray(), > instead of ArratList.toArray(T[]) > > // Build an array of 10 string arrays, which range from length > zero to length 9 > ArrayList<String[]> strings_array = new ArrayList<String[]>(); > ArrayList<String> strings = new ArrayList<String>(); > for(int i = 0; i < 10; i++) { > strings_array.add(strings.toArray(satmp)); > strings.add(GridList.STRINGS[i]); > } > MyArrayAdapter mAdapter = new MyArrayAdapter(this, > R.layout.grid, R.id.text1, strings_array.toArray(saatmp)); > this.setListAdapter(mAdapter); > } > > // This is the "outer" adapter, the one for the ListView > private class MyArrayAdapter extends ArrayAdapter<String[]> { > > public MyArrayAdapter(Context context, int textViewResourceId, > int > textRes, String[][] objects) { > super(context, textViewResourceId, textRes, objects); > } > > �...@override > public View getView(int position, View convertView, ViewGroup > parent) { > LinearLayout ll; > if (convertView == null) { > ll = (LinearLayout) GridList.this.getLayoutInflater > ().inflate(R.layout.grid, null); > } else { > ll = (LinearLayout) convertView; > } > TextView tv = (TextView) ll.findViewById(R.id.text1); > tv.setText("Position #" + position); > GridView gv = (GridView) ll.findViewById(R.id.gridview); > GridAdapter ga = new GridAdapter(GridList.this, > android.R.id.text1, this.getItem(position)); > gv.setAdapter(ga); > return ll; > } > } > > // This is the "inner" adapter, the one for the GridView > private class GridAdapter extends ArrayAdapter<String> { > > public GridAdapter(Context context, int textViewResourceId, > String[] > objects) { > super(context, textViewResourceId, objects); > } > > �...@override > public View getView(int position, View convertView, ViewGroup > parent) { > TextView tv; > if (convertView == null) { // if it's not recycled, > initialize some attributes > tv = new TextView(GridList.this); > } else { > tv = (TextView) convertView; > } > tv.setText(this.getItem(position)); > return tv; > } > } > } > > ****** AndroidManifest.xml ****** > > <?xml version="1.0" encoding="utf-8"?> > <manifest xmlns:android="http://schemas.android.com/apk/res/android" > package="com.example.gridlist" > android:versionCode="1" > android:versionName="1.0"> > <application android:icon="@drawable/icon" android:label="Grid > List"> > <activity android:label="Grid List" android:name=".GridList"> > <intent-filter> > <action android:name="android.intent.action.MAIN" /> > <category > android:name="android.intent.category.LAUNCHER" /> > </intent-filter> > </activity> > </application> > <uses-sdk android:minSdkVersion="2" /> > </manifest> > > > ****** grid.xml ****** > > <?xml version="1.0" encoding="utf-8"?> > <LinearLayout xmlns:android="http://schemas.android.com/apk/res/ > android" > android:layout_width="fill_parent" > android:layout_height="fill_parent" > android:orientation="vertical" >> > <TextView > android:id="@+id/text1" > android:layout_width="fill_parent" > android:layout_height="wrap_content" > /> > <GridView > android:id="@+id/gridview" > android:layout_width="fill_parent" > android:layout_height="wrap_content" > android:numColumns="auto_fit" > android:verticalSpacing="5sp" > android:horizontalSpacing="5sp" > android:columnWidth="90sp" > android:stretchMode="columnWidth" > android:gravity="center" > /> > </LinearLayout> > > -- > You received this message because you are subscribed to the Google > Groups "Android Developers" group. > To post to this group, send email to [email protected] > To unsubscribe from this group, send email to > [email protected] > For more options, visit this group at > http://groups.google.com/group/android-developers?hl=en > -- Romain Guy Android framework engineer [email protected] Note: please don't send private questions to me, as I don't have time to provide private support. All such questions should be posted on public forums, where I and others can see and answer them -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en

