2016-03-31 6 views
-1

AndroidのListViewのスクロールの最後にボタンの高さを設定したい場合、最後の項目をスクロールして最後にフッターの高さを変更するとクラッシュします。最後のページの最後に、Buttonの高さを80に設定し、ProgressBarを0に設定したいとします。問題はProgressBarの高さが0に正しく設定されていますが、ボタンの高さは増えません。Androidのボタンの高さを設定している間にアプリケーションがクラッシュする

このリストビューのスクロールリスナーの私のコードです

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) 
+0

LinearLayout.LayoutParamsのparams =のbtnLoadMore.getLayoutParams()。 params.height = 80; btnLoadMore.setLayoutParams(params); –

答えて

1

使用この

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

    btnLoadMore.setLayoutParams(linearPrams); 
+0

あなたのコードを使用しましたが、java.lang.ClassCastException:android.widget.LinearLayout $ LayoutParamsをandroid.widget.RelativeLayout $ LayoutParamsにキャストできません。 – jandroid

+0

RelativeLayout.LayoutParams linearPrams = new RelativeLayout.LayoutParams(80,0); – sushildlh

+0

これを見てください – sushildlh

0

はこのようにしてみてください。

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

インポートRelativeLayout.LayoutParams)次に

button.setLayoutParams(params) ; 
関連する問題