I do not see where you are associating a LinearLayout.LayoutParams
with the LinearLayout's children.

On Wed, Oct 13, 2010 at 8:59 PM, Bret Foreman <[email protected]> wrote:
> Well, a quick experiment shows that there might be a problem with a
> LinearLayout as the view. Here's the code for getChildView. The
> database stuff is tried and true. In my test case there are no level 3
> items so just one TextView is created inside the LinearLayout.
>
>                       �...@override
>                        public View getChildView(int appIndex , int tableIndex 
> , boolean
> isLastChild, View convertView, ViewGroup parent) {
>                                NameAndIdPair table = (NameAndIdPair) 
> getChild( appIndex ,
> tableIndex );
>                                SQLiteObjectListDbAdapter reportDb = null;
>                                Cursor reports = null;
>                                if( convertView == null ) {
>                                        convertView = new LinearLayout( 
> ThreeLevelListActivity.this );
>                                }
>                                else {
>                                        ((LinearLayout) 
> convertView).removeAllViews();
>                                }
>                                try {
>                                        TextView tv;
>                                        reportDb =
>                                                new 
> SQLiteObjectListDbAdapter(ThreeLevelListActivity.this ,
> prefs.getPrefString(IPCUtils.usernameKey) , table );
>                                        tv = new 
> TextView(ThreeLevelListActivity.this);
>                                        tv.setText(table.name);
>                                        ((LinearLayout) 
> convertView).addView(tv);
>                                        reports = reportDb.getAllRecords(null);
>                                        for( int i = 0 ; i < 
> reports.getCount() ; i++ ){
>                                                NameAndIdPair report = new
> NameAndIdPair( 
> reports.getString(reports.getColumnIndex(SQLiteObjectListDbAdapter.dbColObjectName))
>  ,
>
> reports.getString(reports.getColumnIndex(SQLiteObjectListDbAdapter.dbColObjectId)));
>                                                tv = new 
> TextView(ThreeLevelListActivity.this);
>                                                tv.setText(report.name);
>                                                ((LinearLayout) 
> convertView).addView(tv);
>                                        }
>                                } catch (SQLException e) {
>                                        // TODO Auto-generated catch block
>                                        e.printStackTrace();
>                                } catch (MissingPrefKeyException e) {
>                                        // TODO Auto-generated catch block
>                                        e.printStackTrace();
>                                } catch (IOException e) {
>                                        // TODO Auto-generated catch block
>                                        e.printStackTrace();
>                                }
>                                finally {
>                                        if( reportDb!= null ) {
>                                                reportDb.close();
>                                        }
>                                        if( reports != null ) {
>                                                reports.close();
>                                        }
>                                }
>                                return null;
>                        }
>
> This results in the following null pointer exception. I'm guessing
> that I need to set up more parameters in the LinearLayout but I'm not
> sure what. I should probably load it from a resource rather than
> create it new on the spot. I'm not sure all the defaults are
> appropriate for this experiment. Any comments?
>
> 10-13 17:49:13.642: ERROR/AndroidRuntime(16570): FATAL EXCEPTION: main
> 10-13 17:49:13.642: ERROR/AndroidRuntime(16570):
> java.lang.NullPointerException
> 10-13 17:49:13.642: ERROR/AndroidRuntime(16570):     at
> android.widget.AbsListView.obtainView(AbsListView.java:1317)
> 10-13 17:49:13.642: ERROR/AndroidRuntime(16570):     at
> android.widget.ListView.makeAndAddView(ListView.java:1727)
> 10-13 17:49:13.642: ERROR/AndroidRuntime(16570):     at
> android.widget.ListView.fillDown(ListView.java:652)
> 10-13 17:49:13.642: ERROR/AndroidRuntime(16570):     at
> android.widget.ListView.fillSpecific(ListView.java:1284)
> 10-13 17:49:13.642: ERROR/AndroidRuntime(16570):     at
> android.widget.ListView.layoutChildren(ListView.java:1558)
> 10-13 17:49:13.642: ERROR/AndroidRuntime(16570):     at
> android.widget.AbsListView.onLayout(AbsListView.java:1147)
> 10-13 17:49:13.642: ERROR/AndroidRuntime(16570):     at
> android.view.View.layout(View.java:7035)
> 10-13 17:49:13.642: ERROR/AndroidRuntime(16570):     at
> android.widget.LinearLayout.setChildFrame(LinearLayout.java:1249)
> 10-13 17:49:13.642: ERROR/AndroidRuntime(16570):     at
> android.widget.LinearLayout.layoutVertical(LinearLayout.java:1125)
> 10-13 17:49:13.642: ERROR/AndroidRuntime(16570):     at
> android.widget.LinearLayout.onLayout(LinearLayout.java:1042)
> 10-13 17:49:13.642: ERROR/AndroidRuntime(16570):     at
> android.view.View.layout(View.java:7035)
> 10-13 17:49:13.642: ERROR/AndroidRuntime(16570):     at
> android.widget.FrameLayout.onLayout(FrameLayout.java:333)
> 10-13 17:49:13.642: ERROR/AndroidRuntime(16570):     at
> android.view.View.layout(View.java:7035)
> 10-13 17:49:13.642: ERROR/AndroidRuntime(16570):     at
> android.widget.LinearLayout.setChildFrame(LinearLayout.java:1249)
> 10-13 17:49:13.642: ERROR/AndroidRuntime(16570):     at
> android.widget.LinearLayout.layoutVertical(LinearLayout.java:1125)
> 10-13 17:49:13.642: ERROR/AndroidRuntime(16570):     at
> android.widget.LinearLayout.onLayout(LinearLayout.java:1042)
> 10-13 17:49:13.642: ERROR/AndroidRuntime(16570):     at
> android.view.View.layout(View.java:7035)
> 10-13 17:49:13.642: ERROR/AndroidRuntime(16570):     at
> android.widget.FrameLayout.onLayout(FrameLayout.java:333)
> 10-13 17:49:13.642: ERROR/AndroidRuntime(16570):     at
> android.view.View.layout(View.java:7035)
> 10-13 17:49:13.642: ERROR/AndroidRuntime(16570):     at
> android.view.ViewRoot.performTraversals(ViewRoot.java:1045)
> 10-13 17:49:13.642: ERROR/AndroidRuntime(16570):     at
> android.view.ViewRoot.handleMessage(ViewRoot.java:1727)
> 10-13 17:49:13.642: ERROR/AndroidRuntime(16570):     at
> android.os.Handler.dispatchMessage(Handler.java:99)
> 10-13 17:49:13.642: ERROR/AndroidRuntime(16570):     at
> android.os.Looper.loop(Looper.java:123)
> 10-13 17:49:13.642: ERROR/AndroidRuntime(16570):     at
> android.app.ActivityThread.main(ActivityThread.java:4627)
> 10-13 17:49:13.642: ERROR/AndroidRuntime(16570):     at
> java.lang.reflect.Method.invokeNative(Native Method)
> 10-13 17:49:13.642: ERROR/AndroidRuntime(16570):     at
> java.lang.reflect.Method.invoke(Method.java:521)
> 10-13 17:49:13.642: ERROR/AndroidRuntime(16570):     at
> com.android.internal.os.ZygoteInit
> $MethodAndArgsCaller.run(ZygoteInit.java:868)
> 10-13 17:49:13.642: ERROR/AndroidRuntime(16570):     at
> com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
> 10-13 17:49:13.642: ERROR/AndroidRuntime(16570):     at
> dalvik.system.NativeStart.main(Native Method)
>
> --
> 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
>



-- 
Mark Murphy (a Commons Guy)
http://commonsware.com | http://github.com/commonsguy
http://commonsware.com/blog | http://twitter.com/commonsguy

_The Busy Coder's Guide to Android Development_ Version 3.1 Available!

-- 
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

Reply via email to