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)
LinearLayout.LayoutParamsのparams =のbtnLoadMore.getLayoutParams()。 params.height = 80; btnLoadMore.setLayoutParams(params); –