What exactly is the problem. "Bonkers" doesn't really tell us much.
On Nov 29, 8:12 pm, authorwjf <[email protected]> wrote: > Hi Android Framework Gurus! > > I am hoping someone out there can answer a question for me about re- > using views in my adapters. My understanding, is that for performance > reasons this is something I should always always always do. Yet in my > experience, doing so always results in the view, whether a grid or > list, going wonky once I get very many children in the view. I > suspect, I'm just doing something flat out wrong. So I put together a > simple straight-forward project to demonstrate both how I attempt to > re-use the views in a grid view, and how it goes bonkers if you add a > few hundred entries and scroll the list. I've tested on both the > cupcake emulator as well as my gingerbread device with the same > results. > > Thanks in advance to anyone who takes the time to respond! > > ==Layouts== > main.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:layout_width="fill_parent" > android:layout_height="wrap_content" > android:text="Reuse Views Demo" /> > <GridView > android:id="@+id/gridview" > android:layout_width="fill_parent" > android:layout_height="fill_parent" > android:padding="5dp" > android:verticalSpacing="5dp" > android:horizontalSpacing="10dp" > android:numColumns="auto_fit" > android:columnWidth="60dp" > android:stretchMode="columnWidth" > android:gravity="center_horizontal"/> > </LinearLayout> > > grid_item.xml > <LinearLayout xmlns:android="http://schemas.android.com/apk/res/ > android" > android:id="@+id/GridItem" > android:layout_width="fill_parent" > android:layout_height="wrap_content" > android:orientation="vertical" > android:gravity="center_horizontal"> > <TextView android:id="@+id/grid_item_text" > android:layout_width="wrap_content" > android:layout_height="wrap_content" > android:gravity="center_horizontal" > android:layout_marginBottom="4dip"/> > </LinearLayout> > > ==source== > Main.java > package com.authorwjf.reuseviews; > > import java.util.ArrayList; > > import android.app.Activity; > import android.os.Bundle; > import android.widget.GridView; > > public class Main extends Activity { > > private CustomAdapter mAdapter; > private ArrayList<String> mItems = new ArrayList<String>(); > > @Override > public void onCreate(Bundle savedInstanceState) { > super.onCreate(savedInstanceState); > setContentView(R.layout.main); > for (int i = 0; i<200; i++) { > mItems.add(Integer.toString(i)); > } > mAdapter = new CustomAdapter(this, mItems); > GridView g = (GridView) findViewById(R.id.gridview); > g.setAdapter(mAdapter); > } > > } > > CustomAdapter.java > package com.authorwjf.reuseviews; > import java.util.ArrayList; > import com.authorwjf.reuseviews.R; > import android.content.Context; > import android.view.LayoutInflater; > import android.view.View; > import android.view.ViewGroup; > import android.widget.BaseAdapter; > import android.widget.TextView; > > public class CustomAdapter extends BaseAdapter { > > private Context mContext; > private ArrayList<String> mItems; > > public CustomAdapter(Context c, ArrayList<String> items) { > mContext = c; > mItems = items; > } > > @Override > public int getCount() { > return mItems.size(); > } > > @Override > public Object getItem(int position) { > return mItems.get(position); > } > > @Override > public long getItemId(int position) { > return position; > } > > @Override > public View getView(int position, View convertView, ViewGroup parent) > { > View v = convertView; > if (v == null) { > LayoutInflater li = (LayoutInflater) > mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); > v = li.inflate(R.layout.grid_item, null); > TextView tv = (TextView)v.findViewById(R.id.grid_item_text); > tv.setText("Item #"+mItems.get(position)); > } > return v; > } > > > > > > > > } -- 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

