应用程序崩溃给索引越界在logcat中同时加入页脚的ListView [英] App crashes giving index out of bounds in logcat while adding footer to listview
问题描述
我有,当它使用onscroll听众达到20rh列表项,加载更多listItems中的一个ListView
我要添加脚注说装载更多的同时,更listItems中越来越加载
当我到达20列表项的应用程序崩溃并称logct IDEX出界
我的活动
公共类的互动活动延伸
{SwipeMenuListView列表视图;
// ListView控件列表视图;查看mFooterView;
@覆盖
公共无效的onCreate(捆绑savedInstanceState)
{ super.onCreate(savedInstanceState);
的setContentView(R.layout.inter_layout);
SHRD preference =新的共享preference();
//执行RemoteDataTask的AsyncTask 新RemoteDataTask()执行();
}
私有类RemoteDataTask扩展的AsyncTask<太虚,太虚,太虚> {
@覆盖
在preExecute保护无效(){
super.on preExecute();
mProgressDialog =新ProgressDialog(InterActivity.this);
mProgressDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
//设置progressdialog称号
//mProgressDialog.setTitle(\"BEGINNER codeS);
//设置progressdialog消息
mProgressDialog.setMessage(Loading请稍候......装);
mProgressDialog.setIndeterminate(真);
mProgressDialog.setCancelable(假);
mProgressDialog.setIndeterminateDrawable(getResources()getDrawable(R.anim.progress_handler));
//显示progressdialog
mProgressDialog.show(); }
@覆盖
保护无效doInBackground(虚空...... PARAMS){
//我在backgroung过程中千万 } @覆盖
保护无效onPostExecute(虚空结果){
//定位listview_main.xml列表视图
//列表视图=(ListView控件)findViewById(R.id.inter_layoutListView); 列表视图=(SwipeMenuListView)findViewById(R.id.inter_layoutListView);
//将结果传递到ListViewAdapter.java
适配器=新FinalAdapter(InterActivity.this,
codeLIST);
mFooterView = LayoutInflater.from(InterActivity.this).inflate(R.layout.footer_layout,NULL); //绑定适配器到ListView
listview.setAdapter(适配器);
//关闭progressdialog
mProgressDialog.dismiss();
//设置onscrll监听器
listview.setOnScrollListener(新OnScrollListener(){ @覆盖
公共无效onScrollStateChanged(AbsListView来看,
INT scrollState){// TODO自动生成方法存根
INT阈值= 1;
诠释计数= listview.getCount(); 如果(scrollState == SCROLL_STATE_IDLE){
如果(listview.getLastVisiblePosition()&GT =计数
- 阈值){
//执行LoadMoreDataTask的AsyncTask
新Loadmore()执行();
}
}
} @覆盖
公共无效onScroll(AbsListView观点,诠释firstVisibleItem,
INT visibleItemCount,诠释totalItemCount){
// TODO自动生成方法存根 } });
}
}私有类Loadmore扩展的AsyncTask<太虚,太虚,太虚> {
@覆盖
在preExecute保护无效(){ super.on preExecute();
listview.addFooterView(mFooterView); }
@覆盖
保护无效doInBackground(虚空...... PARAMS){
//我的负荷mmore数据处理
} @覆盖
保护无效onPostExecute(虚空结果){
INT位置= listview.getLastVisiblePosition(); adapter.notifyDataSetChanged();
listview.removeFooterView(mFooterView);
listview.setSelectionFromTop(位置,0);
}
} }
的logcat
15 02-29:53:11.546 23342 23342ËAndroidRuntime结果
致命异常:主要02-29 15:53:11.546 23342 23342Ë结果
AndroidRuntime结果
java.lang.IndexOutOfBoundsException:无效指数9,大小为0 02-29
15:53:11.546 23342 23342ËAndroidRuntime结果
在
java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251)
15 02-29:53:11.546 23342 23342ËAndroidRuntime结果
在java.util.ArrayList.get(ArrayList.java:304)
15 02-29:53:11.546 23342 23342ËAndroidRuntime结果
在com.enlightenme.pac.FinalAdapter.getItem(FinalAdapter.java:55)
15 02-29:53:11.546 23342 23342ËAndroidRuntime结果
在com.enlightenme.pac.FinalAdapter.getView(FinalAdapter.java:83)
15 02-29:53:11.546 23342 23342ËAndroidRuntime结果
在
com.baoyz.swipemenulistview.SwipeMenuAdapter.getView(SwipeMenuAdapter.java:65)
15 02-29:53:11.546 23342 23342ËAndroidRuntime结果
在android.widget.AbsListView.obtainView(AbsListView.java:2588)
15 02-29:53:11.546 23342 23342ËAndroidRuntime结果
在android.widget.ListView.makeAndAddView(ListView.java:1840)
15 02-29:53:11.546 23342 23342ËAndroidRuntime结果
在android.widget.ListView.fillDown(ListView.java:681)
15 02-29:53:11.546 23342 23342ËAndroidRuntime结果
在android.widget.ListView.fillSpecific(ListView.java:1339)
15 02-29:53:11.546 23342 23342ËAndroidRuntime结果
在android.widget.ListView.layoutChildren(ListView.java:1639)
15 02-29:53:11.546 23342 23342ËAndroidRuntime结果
在android.widget.AbsListView.onLayout(AbsListView.java:2427)
15 02-29:53:11.546 23342 23342ËAndroidRuntime结果
在android.view.View.layout(View.java:14938)
15 02-29:53:11.546 23342 23342ËAndroidRuntime结果
在android.view.ViewGroup.layout(ViewGroup.java:4601)
15 02-29:53:11.546 23342 23342ËAndroidRuntime结果
在android.widget.FrameLayout.onLayout(FrameLayout.java:448)
15 02-29:53:11.546 23342 23342ËAndroidRuntime结果
在android.view.View.layout(View.java:14938)
15 02-29:53:11.546 23342 23342ËAndroidRuntime结果
在android.view.ViewGroup.layout(ViewGroup.java:4601)
15 02-29:53:11.546 23342 23342ËAndroidRuntime结果
在android.widget.FrameLayout.onLayout(FrameLayout.java:448)
15 02-29:53:11.546 23342 23342ËAndroidRuntime结果
在android.view.View.layout(View.java:14938)
15 02-29:53:11.546 23342 23342ËAndroidRuntime结果
在android.view.ViewGroup.layout(ViewGroup.java:4601)
15 02-29:53:11.546 23342 23342ËAndroidRuntime结果
在android.widget.LinearLayout.setChildFrame(LinearLayout.java:1694)
15 02-29:53:11.546 23342 23342ËAndroidRuntime结果
在android.widget.LinearLayout.layoutVertical(LinearLayout.java:1552)
15 02-29:53:11.546 23342 23342ËAndroidRuntime结果
在android.widget.LinearLayout.onLayout(LinearLayout.java:1465)02-29
15:53:11.546 23342 23342ËAndroidRuntime结果
在android.view.View.layout(View.java:14938)
15 02-29:53:11.546 23342 23342ËAndroidRuntime结果
在android.view.ViewGroup.layout(ViewGroup.java:4601)
15 02-29:53:11.546 23342 23342ËAndroidRuntime结果
在android.widget.FrameLayout.onLayout(FrameLayout.java:448)
15 02-29:53:11.546 23342 23342ËAndroidRuntime结果
在android.view.View.layout(View.java:14938)02-29 15:53:11.546 23342
23342êAndroidRuntime在
android.view.ViewGroup.layout(ViewGroup.java:4601)02-29 15:53:11.546
23342 23342êAndroidRuntime在
android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2212)
15 02-29:53:11.546 23342 23342ËAndroidRuntime结果
在android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2026)
15 02-29:53:11.546 23342 23342ËAndroidRuntime结果
在android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1236)
15 02-29:53:11.546 23342 23342ËAndroidRuntime结果
在
android.view.ViewRootImpl $ TraversalRunnable.run(ViewRootImpl.java:5160)
15 02-29:53:11.546 23342 23342ËAndroidRuntime结果
在
android.view.Choreographer $ CallbackRecord.run(Choreographer.java:791)
02-29 15:53:11.546 23342 23342ËAndroidRuntime结果
在android.view.Choreographer.doCallbacks(Choreographer.java:591)
15 02-29:53:11.546 23342 23342ËAndroidRuntime结果
在android.view.Choreographer.doFrame(Choreographer.java:561)02-29
15:53:11.546 23342 23342ËAndroidRuntime结果
在
android.view.Choreographer $ FrameDisplayEventReceiver.run(Choreographer.java:777)
15 02-29:53:11.546 23342 23342ËAndroidRuntime结果
在android.os.Handler.handleCallback(Handler.java:725)02-29
15:53:11.546 23342 23342ËAndroidRuntime结果
在android.os.Handler.dispatchMessage(Handler.java:92)02-29
15:53:11.546 23342 23342ËAndroidRuntime结果
在android.os.Looper.loop(Looper.java:176)02-29 15:53:11.546 23342
23342êAndroidRuntime在
android.app.ActivityThread.main(ActivityThread.java:5365)02-29
15:53:11.546 23342 23342ËAndroidRuntime结果
在java.lang.reflect.Method.invokeNative(本机方法)02-29
15:53:11.546 23342 23342ËAndroidRuntime结果
在java.lang.reflect.Method.invoke(Method.java:511)02-29 15:53:11.546
23342 23342êAndroidRuntime在
com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1102)
02-29 15:53:11.546 23342 23342ËAndroidRuntime结果
在
块引用>新的logcat
java.lang.ClassCastException:com.baoyz.swipemenulistview.SwipeMenuListView $ 1不能转换为android.widget.HeaderViewListAdapter
02-29 17:54:03.976 27184 27184èAndroidRuntime在android.widget.ListView.removeFooterView(ListView.java:396)
02-29 17:54:03.976 27184 27184èAndroidRuntime在com.enlightenme.pac.InterActivity $ Loadmore.onPostExecute(InterActivity.java:383)
解决方案创建footer_view.xml并不仅仅是尝试的onCreate
查看footerView = ((LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.footer_layout,空,假);
list.addFooterView(footerView);I have a listview which loads more listitems when it reaches 20rh listitem using onscroll listener
I want to add a footer saying loading more while more listitems are getting loaded
When i reach the 20th listitem the app crashes saying idex out of bounds in logct
my activity
public class InterActivity extends Activity { SwipeMenuListView listview; //ListView listview; View mFooterView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.inter_layout); shrdPreference = new SharedPreference(); //Execute RemoteDataTask AsyncTask new RemoteDataTask().execute(); } private class RemoteDataTask extends AsyncTask<Void, Void, Void> { @Override protected void onPreExecute() { super.onPreExecute(); mProgressDialog = new ProgressDialog(InterActivity.this); mProgressDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); // Set progressdialog title //mProgressDialog.setTitle("BEGINNER CODES"); // Set progressdialog message mProgressDialog.setMessage("Loading. Please wait loading ...."); mProgressDialog.setIndeterminate(true); mProgressDialog.setCancelable(false); mProgressDialog.setIndeterminateDrawable(getResources().getDrawable(R.anim.progress_handler)); // Show progressdialog mProgressDialog.show(); } @Override protected Void doInBackground(Void... params) { // my do in backgroung process } @Override protected void onPostExecute(Void result) { // Locate the listview in listview_main.xml // listview = (ListView) findViewById(R.id.inter_layoutListView); listview = (SwipeMenuListView) findViewById(R.id.inter_layoutListView); // Pass the results into ListViewAdapter.java adapter = new FinalAdapter(InterActivity.this, codelist); mFooterView = LayoutInflater.from(InterActivity.this).inflate(R.layout.footer_layout, null); // Binds the Adapter to the ListView listview.setAdapter(adapter); // Close the progressdialog mProgressDialog.dismiss();
// setup onscrll listener
listview.setOnScrollListener(new OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { // TODO Auto-generated method stub int threshold = 1; int count = listview.getCount(); if (scrollState == SCROLL_STATE_IDLE) { if (listview.getLastVisiblePosition() >= count - threshold) { // Execute LoadMoreDataTask AsyncTask new Loadmore().execute(); } } } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { // TODO Auto-generated method stub } }); } } private class Loadmore extends AsyncTask<Void, Void, Void> { @Override protected void onPreExecute() { super.onPreExecute(); listview.addFooterView(mFooterView); } @Override protected Void doInBackground(Void... params) { // my load mmore data process } @Override protected void onPostExecute(Void result) { int position = listview.getLastVisiblePosition(); adapter.notifyDataSetChanged(); listview.removeFooterView(mFooterView); listview.setSelectionFromTop(position, 0); } } }
logcat
02-29 15:53:11.546 23342 23342 E AndroidRuntime
FATAL EXCEPTION: main 02-29 15:53:11.546 23342 23342 E
AndroidRuntime
java.lang.IndexOutOfBoundsException: Invalid index 9, size is 0 02-29 15:53:11.546 23342 23342 E AndroidRuntime
at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251)02-29 15:53:11.546 23342 23342 E AndroidRuntime
at java.util.ArrayList.get(ArrayList.java:304)02-29 15:53:11.546 23342 23342 E AndroidRuntime
at com.enlightenme.pac.FinalAdapter.getItem(FinalAdapter.java:55)02-29 15:53:11.546 23342 23342 E AndroidRuntime
at com.enlightenme.pac.FinalAdapter.getView(FinalAdapter.java:83)02-29 15:53:11.546 23342 23342 E AndroidRuntime
at com.baoyz.swipemenulistview.SwipeMenuAdapter.getView(SwipeMenuAdapter.java:65)02-29 15:53:11.546 23342 23342 E AndroidRuntime
at android.widget.AbsListView.obtainView(AbsListView.java:2588)02-29 15:53:11.546 23342 23342 E AndroidRuntime
at android.widget.ListView.makeAndAddView(ListView.java:1840)02-29 15:53:11.546 23342 23342 E AndroidRuntime
at android.widget.ListView.fillDown(ListView.java:681)02-29 15:53:11.546 23342 23342 E AndroidRuntime
at android.widget.ListView.fillSpecific(ListView.java:1339)02-29 15:53:11.546 23342 23342 E AndroidRuntime
at android.widget.ListView.layoutChildren(ListView.java:1639)02-29 15:53:11.546 23342 23342 E AndroidRuntime
at android.widget.AbsListView.onLayout(AbsListView.java:2427)02-29 15:53:11.546 23342 23342 E AndroidRuntime
at android.view.View.layout(View.java:14938)02-29 15:53:11.546 23342 23342 E AndroidRuntime
at android.view.ViewGroup.layout(ViewGroup.java:4601)02-29 15:53:11.546 23342 23342 E AndroidRuntime
at android.widget.FrameLayout.onLayout(FrameLayout.java:448)02-29 15:53:11.546 23342 23342 E AndroidRuntime
at android.view.View.layout(View.java:14938)02-29 15:53:11.546 23342 23342 E AndroidRuntime
at android.view.ViewGroup.layout(ViewGroup.java:4601)02-29 15:53:11.546 23342 23342 E AndroidRuntime
at android.widget.FrameLayout.onLayout(FrameLayout.java:448)02-29 15:53:11.546 23342 23342 E AndroidRuntime
at android.view.View.layout(View.java:14938)02-29 15:53:11.546 23342 23342 E AndroidRuntime
at android.view.ViewGroup.layout(ViewGroup.java:4601)02-29 15:53:11.546 23342 23342 E AndroidRuntime
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1694)02-29 15:53:11.546 23342 23342 E AndroidRuntime
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1552)02-29 15:53:11.546 23342 23342 E AndroidRuntime
at android.widget.LinearLayout.onLayout(LinearLayout.java:1465) 02-29 15:53:11.546 23342 23342 E AndroidRuntime
at android.view.View.layout(View.java:14938)02-29 15:53:11.546 23342 23342 E AndroidRuntime
at android.view.ViewGroup.layout(ViewGroup.java:4601)02-29 15:53:11.546 23342 23342 E AndroidRuntime
at android.widget.FrameLayout.onLayout(FrameLayout.java:448)02-29 15:53:11.546 23342 23342 E AndroidRuntime
at android.view.View.layout(View.java:14938) 02-29 15:53:11.546 23342 23342 E AndroidRuntime at android.view.ViewGroup.layout(ViewGroup.java:4601) 02-29 15:53:11.546 23342 23342 E AndroidRuntime at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2212)02-29 15:53:11.546 23342 23342 E AndroidRuntime
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2026)02-29 15:53:11.546 23342 23342 E AndroidRuntime
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1236)02-29 15:53:11.546 23342 23342 E AndroidRuntime
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5160)02-29 15:53:11.546 23342 23342 E AndroidRuntime
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:791) 02-29 15:53:11.546 23342 23342 E AndroidRuntime
at android.view.Choreographer.doCallbacks(Choreographer.java:591)02-29 15:53:11.546 23342 23342 E AndroidRuntime
at android.view.Choreographer.doFrame(Choreographer.java:561) 02-29 15:53:11.546 23342 23342 E AndroidRuntime
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:777)02-29 15:53:11.546 23342 23342 E AndroidRuntime
at android.os.Handler.handleCallback(Handler.java:725) 02-29 15:53:11.546 23342 23342 E AndroidRuntime
at android.os.Handler.dispatchMessage(Handler.java:92) 02-29 15:53:11.546 23342 23342 E AndroidRuntime
at android.os.Looper.loop(Looper.java:176) 02-29 15:53:11.546 23342 23342 E AndroidRuntime at android.app.ActivityThread.main(ActivityThread.java:5365) 02-29 15:53:11.546 23342 23342 E AndroidRuntime
at java.lang.reflect.Method.invokeNative(Native Method) 02-29 15:53:11.546 23342 23342 E AndroidRuntime
at java.lang.reflect.Method.invoke(Method.java:511) 02-29 15:53:11.546 23342 23342 E AndroidRuntime at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102) 02-29 15:53:11.546 23342 23342 E AndroidRuntime
atnew logcat
java.lang.ClassCastException: com.baoyz.swipemenulistview.SwipeMenuListView$1 cannot be cast to android.widget.HeaderViewListAdapter 02-29 17:54:03.976 27184 27184 E AndroidRuntime at android.widget.ListView.removeFooterView(ListView.java:396) 02-29 17:54:03.976 27184 27184 E AndroidRuntime at com.enlightenme.pac.InterActivity$Loadmore.onPostExecute(InterActivity.java:383)
解决方案Create footer_view.xml and than just try it onCreate
View footerView = ((LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.footer_layout, null, false); list.addFooterView(footerView);
这篇关于应用程序崩溃给索引越界在logcat中同时加入页脚的ListView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!