在Android中设置按钮的高度时应用程序崩溃

时间:2016-03-31 06:00:18

标签: android listview

我想设置Android中ListView滚动结束时按钮的高度。在更改页脚视图的高度时,在滚动最后一项时结束时崩溃崩溃。在最后一页的末尾,我想设置Button的高度为80,ProgressBar为0. 但问题是ProgressBar高度正确为0但按钮高度没有增加。谢谢。 < / p>

这是我的ListView滚动侦听器代码

footer = ((LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.prohressbar, listView , false);
        rLayout = (RelativeLayout) footer.findViewById(R.id.progressRel);
        progressBar = (ProgressBar)footer.findViewById(R.id.progressBar);
        btnLoadMore = (Button)footer.findViewById(R.id.btnLoadMore);
        btnLoadMore.getLayoutParams().height = 0;
        progressBar.getLayoutParams().height = 80;



listView.addFooterView(footer);
        listView.setOnScrollListener(new AbsListView.OnScrollListener()
        {
            private int   total;

            @Override
            public void onScrollStateChanged(AbsListView absListView, int scrollState)
            {}

            @Override
            public void onScroll(AbsListView absListView, int firstItem, int visibleItemCount, final int totalItems)
            {

                total = firstItem+ visibleItemCount;
                Log.e("","total ="+total );

                if(totalItems > 0 && total > 0 && total == totalItems)
                {

                                    }
                                }
                            }, 2000);
                           }

                        preLast = total;
                    }

                    preLast = total;
                    Log.e("","preLast="+preLast);
                    if (pageCount == LocalPages)
                    {
                        if(preLast == total)
                        {
                            Log.e("", "Go to else conditions --- 2 !!!!!!  pageCount=" + pageCount + " LocalPages=" + LocalPages);
                            progressBar.setVisibility(View.GONE);
                           // btnLoadMore.setVisibility(View.VISIBLE);

                            btnLoadMore.getLayoutParams().height = 80;
                            progressBar.getLayoutParams().height = 0;

                        }


                    }
                }
            }
        });

错误:

java.lang.NullPointerException: Attempt to write to field 'int android.view.ViewGroup$LayoutParams.height' on a null object reference
                at com.example.tazeen.classnkk.Pagination_Demo$1.onScroll(Pagination_Demo.java:174)
                at android.widget.AbsListView.invokeOnItemScrollListener(AbsListView.java:1463)
                at android.widget.ListView.layoutChildren(ListView.java:1812)
                at android.widget.AbsListView.onLayout(AbsListView.java:2148)
                at android.view.View.layout(View.java:16630)
                at android.view.ViewGroup.layout(ViewGroup.java:5437)
                at android.support.v4.widget.SwipeRefreshLayout.onLayout(SwipeRefreshLayout.java:562)
                at android.view.View.layout(View.java:16630)
                at android.view.ViewGroup.layout(ViewGroup.java:5437)
                at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1079)
                at android.view.View.layout(View.java:16630)
                at android.view.ViewGroup.layout(ViewGroup.java:5437)
                at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
                at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
                at android.view.View.layout(View.java:16630)
                at android.view.ViewGroup.layout(ViewGroup.java:5437)
                at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
                at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
                at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
                at android.view.View.layout(View.java:16630)
                at android.view.ViewGroup.layout(ViewGroup.java:5437)
                at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
                at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
                at com.android.internal.policy.PhoneWindow$DecorView.onLayout(PhoneWindow.java:2678)
                at android.view.View.layout(View.java:16630)
                at android.view.ViewGroup.layout(ViewGroup.java:5437)
                at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2171)
                at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1931)
                at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107)
                at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6013)
                at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
                at android.view.Choreographer.doCallbacks(Choreographer.java:670)
                at android.view.Choreographer.doFrame(Choreographer.java:606)
                at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
                at android.os.Handler.handleCallback(Handler.java:739)
                at android.os.Handler.dispatchMessage(Handler.java:95)
                at android.os.Looper.loop(Looper.java:148)
                at android.app.ActivityThread.main(ActivityThread.java:5417)
                at java.lang.reflect.Method.invoke(Native Method)
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

2 个答案:

答案 0 :(得分:1)

使用此

  LinearLayout.LayoutParams linearPrams = new   LinearLayout.LayoutParams(80,0);

    btnLoadMore.setLayoutParams(linearPrams);

答案 1 :(得分:0)

尝试这样。

LayoutParams params = new LayoutParams(LayoutParam.WRAP_CONTENT,  80);

import RelativeLayout.LayoutParams

然后

button.setLayoutParams(params) ;