Thanks! It seems it would be easy enough to do: the scrollability of a GridView needs to be optional, so you could put it into a ListView and it would remain full height.
There doesn't seem to be a need for each of the ListView elements to be the same size. I just tried a work-around where I just naively put stacked text views in a LinearLayout and, while that's ugly and unacceptable, it does work and leads to list elements that are different sizes. I also tried a Spinner and that seems to work, although it shows only the first line and when you click on it you have to select in the pop- up list to get it to go away. On Dec 11, 10:14 am, Romain Guy <[email protected]> wrote: > 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

