我想在代码中实现布局,其实是很简单的布局,但是还是出错,看了半天也没查处错误在哪,请大侠们帮忙看看,附上布局代码
:linearLayout = new LinearLayout(this);
        setContentView(linearLayout);
        linearLayout.setOrientation(LinearLayout.VERTICAL);

        listViewShowMessage = new ListView(this);
llpListView = new LinearLayout.LayoutParams
(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
linearLayout.addView(listViewShowMessage, llpListView);

loadMore = new Button(this);
loadMore.setText("load");
loadMore.setId(1);
/*llpButton = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT);*/
linearLayout.addView(loadMore, llpButton);
listViewShowMessage.addFooterView(loadMore); Logcat中报   ClassCastExceptions   不知道是什么原因造成的?

解决方案 »

  1.   

    你好,完整的错误信息如下,麻烦你帮我看下,呵呵,新手
    07-10 03:53:55.957: ERROR/AndroidRuntime(4276):     at android.widget.ListView.clearRecycledState(ListView.java:522)
    07-10 03:53:55.957: ERROR/AndroidRuntime(4276):     at android.widget.ListView.resetList(ListView.java:509)
    07-10 03:53:55.957: ERROR/AndroidRuntime(4276):     at android.widget.ListView.layoutChildren(ListView.java:1446)
    07-10 03:53:55.957: ERROR/AndroidRuntime(4276):     at android.widget.AbsListView.onLayout(AbsListView.java:1260)
    07-10 03:53:55.957: ERROR/AndroidRuntime(4276):     at android.view.View.layout(View.java:7175)
    07-10 03:53:55.957: ERROR/AndroidRuntime(4276):     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1254)
    07-10 03:53:55.957: ERROR/AndroidRuntime(4276):     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1130)
    07-10 03:53:55.957: ERROR/AndroidRuntime(4276):     at android.widget.LinearLayout.onLayout(LinearLayout.java:1047)
    07-10 03:53:55.957: ERROR/AndroidRuntime(4276):     at android.view.View.layout(View.java:7175)
    07-10 03:53:55.957: ERROR/AndroidRuntime(4276):     at android.widget.FrameLayout.onLayout(FrameLayout.java:338)
    07-10 03:53:55.957: ERROR/AndroidRuntime(4276):     at android.view.View.layout(View.java:7175)
    07-10 03:53:55.957: ERROR/AndroidRuntime(4276):     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1254)
    07-10 03:53:55.957: ERROR/AndroidRuntime(4276):     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1130)
    07-10 03:53:55.957: ERROR/AndroidRuntime(4276):     at android.widget.LinearLayout.onLayout(LinearLayout.java:1047)
    07-10 03:53:55.957: ERROR/AndroidRuntime(4276):     at android.view.View.layout(View.java:7175)
    07-10 03:53:55.957: ERROR/AndroidRuntime(4276):     at android.widget.FrameLayout.onLayout(FrameLayout.java:338)
    07-10 03:53:55.957: ERROR/AndroidRuntime(4276):     at android.view.View.layout(View.java:7175)
    07-10 03:53:55.957: ERROR/AndroidRuntime(4276):     at android.view.ViewRoot.performTraversals(ViewRoot.java:1140)
    07-10 03:53:55.957: ERROR/AndroidRuntime(4276):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1859)
    07-10 03:53:55.957: ERROR/AndroidRuntime(4276):     at android.os.Handler.dispatchMessage(Handler.java:99)
    07-10 03:53:55.957: ERROR/AndroidRuntime(4276):     at android.os.Looper.loop(Looper.java:123)
    07-10 03:53:55.957: ERROR/AndroidRuntime(4276):     at android.app.ActivityThread.main(ActivityThread.java:3683)
    07-10 03:53:55.957: ERROR/AndroidRuntime(4276):     at java.lang.reflect.Method.invokeNative(Native Method)
    07-10 03:53:55.957: ERROR/AndroidRuntime(4276):     at java.lang.reflect.Method.invoke(Method.java:507)
    07-10 03:53:55.957: ERROR/AndroidRuntime(4276):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
    07-10 03:53:55.957: ERROR/AndroidRuntime(4276):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
    07-10 03:53:55.957: ERROR/AndroidRuntime(4276):     at dalvik.system.NativeStart.main(Native Method)
      

  2.   

    linearLayout.addView(loadMore, llpButton);
    listViewShowMessage.addFooterView(loadMore);  这重复了
      

  3.   

    但是我去掉 listViewShowMessage.addFooterView(loadMore)后运行的界面上Button就不会出现了,请问这是什么原因?
      

  4.   

    但是我去掉 listViewShowMessage.addFooterView(loadMore)后运行的界面上Button就不会出现了,请问这是什么原因?
      

  5.   


    你的lpListView = new LinearLayout.LayoutParams
    (LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
    linearLayout.addView(listViewShowMessage, llpListView); 这个充满屏幕了,可以去掉linearLayout.addView(loadMore, llpButton);这个,
    加上listViewShowMessage.addFooterView(loadMore);这个
      

  6.   

    listViewShowMessage = new ListView(this);
    llpListView = new LinearLayout.LayoutParams
    (LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
    linearLayout.addView(listViewShowMessage, llpListView);
    你把listview的宽、高设都为fill_parent了,可以改成match_parent或者wrap_content,或者给线型布局里的
    listview和 button设个权重(weight)试试
      

  7.   

     linearLayout = new LinearLayout(this);
            setContentView(linearLayout);
            linearLayout.setOrientation(LinearLayout.VERTICAL);

            listViewShowMessage = new ListView(this);
    llpListView = new LinearLayout.LayoutParams
    (LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
    linearLayout.addView(listViewShowMessage, llpListView);

    loadMore = new Button(this);
    loadMore.setText("load");
    loadMore.setId(1);

    llpButton = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,
    LayoutParams.WRAP_CONTENT);
    loadMore.setLayoutParams(llpButton);
    //linearLayout.addView(loadMore, llpButton);

    listViewShowMessage.addFooterView(loadMore);
    我都试过了   Button还是没有显示。看来看去就这点代码,但实在不知道哪里出错了,求指点啊
      

  8.   


    把下面这句注释掉
    //listViewShowMessage.addFooterView(loadMore);
    用linearLayout.addView(loadMore, llpButton);就行了
    根据你的代码button应该是listview的兄弟在同一个层次
      

  9.   

    你的footerbutton是listview的footer中的,你既然已经添加到listview中了,就不要在添加到linearlayout中去了,如果你还需要一个button的话,就在new一个。从你的布局上来看的话,
    你是在linearlayout中实现一个下部带button,上面是listiew的界面。注意设置权重, 在往linearLayout添加view的时候。把listview, button都设置为1看看。
      

  10.   

    其实我是想将Button设置为listView的footerView,但是我直接new一个button添加进去后button就没有显示了。然后我又设置button的权重和属性,这样一来又报错了。纠结啊
    linearLayout = new LinearLayout(this);
            setContentView(linearLayout);
            linearLayout.setOrientation(LinearLayout.VERTICAL);

            listViewShowMessage = new ListView(this);
    llpListView = new LinearLayout.LayoutParams
    (LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT,5);
    linearLayout.addView(listViewShowMessage, llpListView);

    loadMore = new Button(this);
    loadMore.setText("load");
    loadMore.setId(1);

    llpButton = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,
    LayoutParams.WRAP_CONTENT,1);
    loadMore.setLayoutParams(llpButton);
                    listViewShowMessage.addFooterView(loadMore);
      

  11.   

    那就直接写一个xml文件,用inflater,就可以了,把linearLayout设置为parent layout.
      

  12.   

    哎  不管用,纠结死,老是报ClassCastException 错误  到底是什么原因造成的