hello Brad, thanks for your reply.
Isn't the call to super.getView(...) suppose to do this ?? I already
told the adapter which layout to use (see the constructor of my
adpater on my first post), so it should know which one to inflate.
Anyways I tried something similar to what you suggested :
if (convertView == null) {
convertView =
LayoutInflater.from(getApplicationContext()).inflate(R.layout.step_list_item,
null);
}
but I've got a similar nullPointerException when I call
"findViewById" :
EditText ed = (EditText)
convertView.findViewById(R.id.list_item_sb); // return null
ed.setText("test"); // will crash
Again, it works fine when the list is shown for the first time but it
crash when I use "adapter.notifyDataSetChanged()" ...
So "R.id.list_item_sb" is found in my layout the first time but not
the second time ???
This is getting confusing :(
On May 31, 10:07 pm, Brad Gies <[email protected]> wrote:
> You need something like this in the getView to create the view if it
> hasn't been created already.:
>
> if (convertView == null)
> {
> LayoutInflater inflater =
> Groups.this.getLayoutInflater();
> convertView = inflater.inflate(R.layout.groupitem,
> null);
> }
>
> On 31/05/2010 12:58 PM, Christophe wrote:
>
>
>
> > hello,
>
> > I have written a custom ArrayAdapter for a ListActivity :
>
> > private class StepItemAdapter extends ArrayAdapter<Step> {
> > public StepItemAdapter(Context context, List<Step> objects) {
> > super(context, R.layout.step_list_item,
> > R.id.list_item_sb,
> > objects);
> > }
>
> > �...@override
> > public View getView(final int pos, View convertView, ViewGroup
> > parent) {
> > View v = super.getView(pos, convertView, parent); //
> > will crash
> > here
>
> > // etc ...
> > }
> > }
>
> > On the "onCreate" method of the activity I tell the activity to use
> > this adapter with a list of object I get from somewhere else
> > ("t.getSteps()") :
>
> > adapter = new StepItemAdapter(this, t.getSteps());
> > this.setListAdapter(adapter);
>
> > Everything works fine and the activity is displayed. But if I add a
> > new object to the list and tell the adapter to refresh the view I've
> > got an error :
>
> > t.getSteps().add(3, new Step());
> > adapter.notifyDataSetChanged();
>
> > The "getView" method of my adapter is called, which is ok since the
> > list view need to be updated, but I've got an exception on the call to
> > "super.getView(pos, convertView, parent)".
>
> > The stack trace :
>
> > java.lang.NullPointerException
> > at
> > android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:
> > 355)
> > at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323)
> > at pkr.tm.activities.EditTemplateActivity
> > $StepItemAdapter.getView(EditTemplateActivity.java:145)
> > at
> > android.widget.HeaderViewListAdapter.getView(HeaderViewListAdapter.java:
> > 220)
> > at android.widget.AbsListView.obtainView(AbsListView.java:1294)
> > at android.widget.ListView.makeAndAddView(ListView.java:1727)
> > at android.widget.ListView.fillDown(ListView.java:652)
> > at android.widget.ListView.fillSpecific(ListView.java:1284)
> > at android.widget.ListView.layoutChildren(ListView.java:1558)
> > at android.widget.AbsListView.onLayout(AbsListView.java:1147)
> > ...
>
> > Do you guy have any ideas of what is going on ??
>
> --
> Sincerely,
>
> Brad Gies
> -----------------------------------------------------------------------
> Bistro Bot - Bistro
> Blurbhttp://www.bgies.comhttp://www.bistroblurb.comhttp://www.bistrobot.com
> -----------------------------------------------------------------------
>
> Never doubt that a small group of thoughtful, committed people can
> change the world. Indeed. It is the only thing that ever has - Margaret Mead
--
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