Hi Mark,

The problem is when you do:

>         mcv.setLayoutParams(new
> LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,
> LayoutParams.WRAP_CONTENT));

A view's layout parameters should be the type its parent expects to see
(because those parameters are really used for the layout (parent) to store
metadata for that child).  So, in this case, this mcv view wlil eventually
go into a ListView, but you're saying to use LinearLayout.LayoutParams.
Instead, try using ListView.LayoutParams.

jason



On Wed, Nov 5, 2008 at 1:09 PM, Mark Wyszomierski <[EMAIL PROTECTED]> wrote:

>
> Hi Jason,
>
> Could you show me the code of the View you're returning, to see if
> that'll work for me instead?
>
> Thanks
>
> On Nov 4, 2:14 am, Mark Wyszomierski <[EMAIL PROTECTED]> wrote:
> > Hi Jason,
> >
> > Thanks for the help, I'll post the stack trace below. Maybe I'm
> > creating the view incorrectly. I tried something like:
> >
> >     public class MyChildView extends LinearLayout
> >     {
> >         public MyChildView(Context context)
> >         {
> >             super(context);
> >         }
> >     }
> >
> >     // Inside my BaseExpandableListAdapter extended class:
> >     public View getChildView(int groupPosition,
> >                                          int childPosition,
> >                                          boolean isLastChild,
> >                                          View convertView,
> >                                          ViewGroup parent)
> >     {
> >         MyChildView mcv = new
> > MyChildView(MyAdapter.this.getContext());
> >         mcv.setLayoutParams(new
> > LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,
> > LayoutParams.WRAP_CONTENT));
> >         mcv.setOrientation(LinearLayout.HORIZONTAL);
> >         mcv.addView(new ImageView(...));
> >         mcv.addView(new TextView(...));
> >         return mcv;  // <-- exception after return.
> >     }
> >
> > Returning a TextView like in the API sample works ok. Here's the stack
> > trace:
> >
> > 11-04 02:01:23.602: ERROR/AndroidRuntime(190): Uncaught handler:
> > thread main exiting due to uncaught exception
> > 11-04 02:01:23.851: ERROR/AndroidRuntime(190):
> > java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams
> > 11-04 02:01:23.851: ERROR/AndroidRuntime(190):     at
> > android.widget.ListView.setupChild(ListView.java:1646)
> > 11-04 02:01:23.851: ERROR/AndroidRuntime(190):     at
> > android.widget.ListView.makeAndAddView(ListView.java:1619)
> > 11-04 02:01:23.851: ERROR/AndroidRuntime(190):     at
> > android.widget.ListView.fillDown(ListView.java:601)
> > 11-04 02:01:23.851: ERROR/AndroidRuntime(190):     at
> > android.widget.ListView.fillSpecific(ListView.java:1189)
> > 11-04 02:01:23.851: ERROR/AndroidRuntime(190):     at
> > android.widget.ListView.layoutChildren(ListView.java:1454)
> > 11-04 02:01:23.851: ERROR/AndroidRuntime(190):     at
> > android.widget.AbsListView.onLayout(AbsListView.java:937)
> > 11-04 02:01:23.851: ERROR/AndroidRuntime(190):     at
> > android.view.View.layout(View.java:5637)
> > 11-04 02:01:23.851: ERROR/AndroidRuntime(190):     at
> > android.widget.FrameLayout.onLayout(FrameLayout.java:294)
> > 11-04 02:01:23.851: ERROR/AndroidRuntime(190):     at
> > android.view.View.layout(View.java:5637)
> > 11-04 02:01:23.851: ERROR/AndroidRuntime(190):     at
> > android.widget.LinearLayout.setChildFrame(LinearLayout.java:1119)
> > 11-04 02:01:23.851: ERROR/AndroidRuntime(190):     at
> > android.widget.LinearLayout.layoutVertical(LinearLayout.java:999)
> > 11-04 02:01:23.851: ERROR/AndroidRuntime(190):     at
> > android.widget.LinearLayout.onLayout(LinearLayout.java:920)
> > 11-04 02:01:23.851: ERROR/AndroidRuntime(190):     at
> > android.view.View.layout(View.java:5637)
> > 11-04 02:01:23.851: ERROR/AndroidRuntime(190):     at
> > android.widget.FrameLayout.onLayout(FrameLayout.java:294)
> > 11-04 02:01:23.851: ERROR/AndroidRuntime(190):     at
> > android.view.View.layout(View.java:5637)
> > 11-04 02:01:23.851: ERROR/AndroidRuntime(190):     at
> > android.widget.LinearLayout.setChildFrame(LinearLayout.java:1119)
> > 11-04 02:01:23.851: ERROR/AndroidRuntime(190):     at
> > android.widget.LinearLayout.layoutVertical(LinearLayout.java:999)
> > 11-04 02:01:23.851: ERROR/AndroidRuntime(190):     at
> > android.widget.LinearLayout.onLayout(LinearLayout.java:920)
> > 11-04 02:01:23.851: ERROR/AndroidRuntime(190):     at
> > android.view.View.layout(View.java:5637)
> > 11-04 02:01:23.851: ERROR/AndroidRuntime(190):     at
> > android.widget.FrameLayout.onLayout(FrameLayout.java:294)
> > 11-04 02:01:23.851: ERROR/AndroidRuntime(190):     at
> > android.view.View.layout(View.java:5637)
> > 11-04 02:01:23.851: ERROR/AndroidRuntime(190):     at
> > android.view.ViewRoot.performTraversals(ViewRoot.java:771)
> > 11-04 02:01:23.851: ERROR/AndroidRuntime(190):     at
> > android.view.ViewRoot.handleMessage(ViewRoot.java:1103)
> > 11-04 02:01:23.851: ERROR/AndroidRuntime(190):     at
> > android.os.Handler.dispatchMessage(Handler.java:88)
> > 11-04 02:01:23.851: ERROR/AndroidRuntime(190):     at
> > android.os.Looper.loop(Looper.java:123)
> > 11-04 02:01:23.851: ERROR/AndroidRuntime(190):     at
> > android.app.ActivityThread.main(ActivityThread.java:3742)
> > 11-04 02:01:23.851: ERROR/AndroidRuntime(190):     at
> > java.lang.reflect.Method.invokeNative(Native Method)
> > 11-04 02:01:23.851: ERROR/AndroidRuntime(190):     at
> > java.lang.reflect.Method.invoke(Method.java:515)
> > 11-04 02:01:23.851: ERROR/AndroidRuntime(190):     at
> > com.android.internal.os.ZygoteInit
> > $MethodAndArgsCaller.run(ZygoteInit.java:739)
> > 11-04 02:01:23.851: ERROR/AndroidRuntime(190):     at
> > com.android.internal.os.ZygoteInit.main(ZygoteInit.java:497)
> > 11-04 02:01:23.851: ERROR/AndroidRuntime(190):     at
> > dalvik.system.NativeStart.main(Native Method)
> >
> > Thanks
> >
> > On Nov 4, 12:47 am, "Jason Parekh" <[EMAIL PROTECTED]> wrote:
> >
> > > Hi Mark,
> >
> > > I just tried as you suggested with the ExpandableList1 sample, and I
> don't
> > > see any exceptions.  Can you print the stack of the exception you're
> seeing?
> >
> > > You can browse the source athttp://git.source.android.com
> >
> > > jason
> >
> > > On Mon, Nov 3, 2008 at 2:33 PM, Mark Wyszomierski <[EMAIL PROTECTED]>
> wrote:
> >
> > > > Hi,
> >
> > > > Trying to implement BaseExpandableListAdapter.getChildView() but it
> > > > throws a class cast exception if I try returning any descendant of
> > > > View, such as LinearLayout, or ViewGroup:
> >
> > > >     public View BaseExpandableListAdapter.getChildView()
> > > >     {
> > > >          return new LinearLayout(..);
> > > >     }
> >
> > > > The API sample returns a TextView, which doesn't crash. What's
> special
> > > > about TextView that works, but ViewGroup will not? I thought they
> both
> > > > derive from View? This used to work in earlier versions of the SDK.
> >
> > > > Is there anything like browse source in svn that will let me just
> look
> > > > at the source of TextView online or do I have to download the entire
> > > > source tree to do this?
> >
> > > > Thanks
> >
> >
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to