- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 ListView 实现分页。我试图在加载我的一些数据时添加页脚 View ,并在到达 ListView 末尾的 setOnScrollListener 的最后一页时删除 ListView 末尾的页脚 View 。但是在最后一页出现崩溃时出现 IndexOutOfBoundsException 问题:无效索引 2 , 大小为 2
我在初始化列表后添加页脚 View
ListView listView;
int pageCount = 0;
View footer;@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
listView = (ListView) findViewById(R.id.load);
// Add footer view
footer = ((LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.prohressbar, null, false);
listView.addFooterView(footer);
List<All_Post> allDesc = dbhelper.getAllDescriptions(OFFSET);
for (All_Post all_Post : allDesc){
descArray.add(all_Post);
}
if (adapter == null) {
adapter = new AllPostAdapter(this, R.layout.allpostlist, descArray);
listView.setAdapter(adapter);
}
if (adapter != null) {
adapter.notifyDataSetChanged();
adapter = new AllPostAdapter(this, R.layout.allpostlist, descArray);
listView.setAdapter(adapter);
listView.invalidateViews();
final SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
int item_position = sharedPreferences.getInt("item_position", 0);
listView.setSelection(item_position);
}
Pegination();
这是我的分页方法
public void Pegination() {
final int activityCount = sharedPreferences.getInt("ActivityListCount", 0);
Log.e("", "activityCount in Pegination method =" + activityCount);
listView.addFooterView(footer);
final Button btnLoadMore = new Button(this);
btnLoadMore.setText("Load More ....");
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) {
if (preLast != total) {
if (pageCount < LocalPages) {
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
pageCount++;
List<All_Post> allDesc = dbhelper.getAllDescriptions(OFFSET_SCROLL);
for (All_Post all_Post : allDesc) {
descArray.add(all_Post);
}
if (adapter != null) {
adapter.notifyDataSetChanged();
listView.setAdapter(adapter);
listView.setSelection(totalItems);
}
}
}, 2500);
}
preLast = total;
Log.e("", "11111111111 preLast=" + preLast);
}
preLast = total;
Log.e("", "222222222222222 preLast=" + preLast);
if (pageCount == LocalPages)
{
if (preLast == total)
{
if (activityCount == 200)
{
Log.e(" 11111 In btnLoadMore ", " ActivityListCount =" + activityCount);
Log.e("", "Go to else conditions --- 1 !!!!!! pageCount=" + pageCount + " LocalPages=" + LocalPages);
pageCount = 0;
listView.removeFooterView(footer);
listView.addFooterView(btnLoadMore);
}
}
if (activityCount < 200) {
Log.e(" 222222 In btnLoadMore ", " ActivityListCount =" + activityCount);
Log.e("", "Go to else conditions --- 2 !!!!!! pageCount=" + pageCount + " LocalPages=" + LocalPages);
pageCount = 0;
listView.removeFooterView(btnLoadMore);
}
}
}
}
}
});
}
这是我的 Log Cat 错误信息。
04-25 15:48:18.780 28787-28787/com.example.tazeen.classnkk E/﹕ total =137
04-25 15:48:18.780 28787-28787/com.example.tazeen.classnkk E/﹕ 222222222222222 preLast=137
04-25 15:48:18.781 28787-28787/com.example.tazeen.classnkk E/11111 In btnLoadMore﹕ ActivityListCount =200
04-25 15:48:18.781 28787-28787/com.example.tazeen.classnkk E/﹕ Go to else conditions --- 1 !!!!!! pageCount=3 LocalPages=3
04-25 15:48:18.785 28787-28787/com.example.tazeen.classnkk D/AndroidRuntime﹕ Shutting down VM
04-25 15:48:18.788 28787-28787/com.example.tazeen.classnkk E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.tazeen.classnkk, PID: 28787
java.lang.IndexOutOfBoundsException: Invalid index 2, size is 2
at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
at java.util.ArrayList.get(ArrayList.java:308)
at android.widget.HeaderViewListAdapter.isEnabled(HeaderViewListAdapter.java:164)
at android.widget.ListView.dispatchDraw(ListView.java:3334)
at android.view.View.draw(View.java:15364)
at android.widget.AbsListView.draw(AbsListView.java:4434)
at android.view.View.updateDisplayListIfDirty(View.java:14242)
at android.view.View.getDisplayList(View.java:14272)
at android.view.View.draw(View.java:15057)
at android.view.ViewGroup.drawChild(ViewGroup.java:3528)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3322)
at android.view.View.draw(View.java:15364)
at android.view.View.updateDisplayListIfDirty(View.java:14242)
at android.view.View.getDisplayList(View.java:14272)
at android.view.View.draw(View.java:15057)
at android.view.ViewGroup.drawChild(ViewGroup.java:3528)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3322)
at android.view.View.updateDisplayListIfDirty(View.java:14234)
at android.view.View.getDisplayList(View.java:14272)
at android.view.View.draw(View.java:15057)
at android.view.ViewGroup.drawChild(ViewGroup.java:3528)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3322)
at android.view.View.updateDisplayListIfDirty(View.java:14234)
at android.view.View.getDisplayList(View.java:14272)
at android.view.View.draw(View.java:15057)
at android.view.ViewGroup.drawChild(ViewGroup.java:3528)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3322)
at android.view.View.updateDisplayListIfDirty(View.java:14234)
at android.view.View.getDisplayList(View.java:14272)
at android.view.View.draw(View.java:15057)
at android.view.ViewGroup.drawChild(ViewGroup.java:3528)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3322)
at android.view.View.updateDisplayListIfDirty(View.java:14234)
at android.view.View.getDisplayList(View.java:14272)
at android.view.View.draw(View.java:15057)
at android.view.ViewGroup.drawChild(ViewGroup.java:3528)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3322)
at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchDraw(PhoneWindow.java:2845)
at android.view.View.draw(View.java:15364)
at android.widget.FrameLayout.draw(FrameLayout.java:647)
at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2824)
at android.view.View.updateDisplayListIfDirty(View.java:14242)
at android.view.View.getDisplayList(View.java:14272)
at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:267)
at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:273)
at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:312)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:2852)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2689)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2313)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1251)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6438)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:795)
at android.view.Choreographer.doCallbacks(Choreographer.java:598)
at android.view.Choreographer.doFrame(Choreographer.java:567)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:781)
at android.os.Handler.handleCallback(Handler.java:810)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:189)
at android.app.ActivityThread.main(ActivityThread.java:5529)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:950)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:745)
谁能帮我解决这个问题。为什么会出现 InvallidIndexOutOfBoundException 。
最佳答案
索引值从零开始。所以数组/列表的第一个元素是 0 e 第二个是 1。你说你的数据只有 2 个元素,所以索引 2 是你没有的 3 元素。查看您的代码并正确处理限制。
在这一行,intead == use <:
if (totalItems > 0 && total > 0 && total < totalItems) {
但也要验证您的整个代码以发现其他可能的错误。
关于java.lang.IndexOutOfBoundsException : Invalid index 2, 大小为 2 而在 Android 中删除 ListView 末尾的页脚 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36837957/
这个问题已经有答案了: What causes a java.lang.ArrayIndexOutOfBoundsException and how do I prevent it? (25 个回答)
((fn [coll] (letfn [(add-item [acc coll idx] (conj acc (nth coll idx))
我不是 Java 初学者,但也不是专家,这就是我发布此文章以寻求帮助/解释的原因。我在互联网上查找了很多地方,但没有找到我正在寻找的答案。 public class Driver { public s
我不断得到 线程“main”中出现异常 java.lang.ArrayIndexOutOfBoundsException:MergeSorter.merge(MergeSorter.java:44)、
我做了一个小射击游戏..它工作正常但我也想实现如果火相交它们会消失。我有两个播放器子弹列表和计算机子弹列表......但是如果我有更多来自计算机或反向的子弹。这是我的循环 for (int
我试图从 JOptionPane 读取像 3+9-2*10/5 这样的数学表达式并得到它的结果——当然要考虑到操作顺序。我使用 String.split() 将字符串拆分为数字和操作数,并创建了一个寻
我在Grails中有以下代码: public LibraryItem createLibraryItemWithValues(ProjectItem projectItem) { def li
这个问题已经有答案了: What is a debugger and how can it help me diagnose problems? (3 个回答) 已关闭 7 年前。 我有一组以下类型的
请看下面的代码 DatabaseHandler.java public List getDetails(String name) { List details = new Ar
我应该让蛇形矩形沿着屏幕的一侧移动。然而它保持在原位,当我运行它时,我还收到 IndexOutOfBoundsException 错误。我相信这与我的 Render.java 文件中的 for 循环有
ArrayList beds = new ArrayList(49); public Patient getPatient(int bedNumber) { if (beds.get(bedN
我有 10 张卡片的数组。在“回合”的过程中,我向数组添加一张卡片,然后从数组中删除一张卡片(并不总是相同的)。该代码在前 6-7 回合中效果很好,然后抛出 IndexOutofBoundsExcep
我正在尝试创建一个评分系统并获得最佳分数,但我的方法生成了 IndexOutOfBoundsException,但我找不到超出数组列表范围的内容,有人可以帮助我吗? 代码: public stati
为什么 int row = 1; // multiArray[col].length = 6 while(multiArray[col][row] > 1 && row 1) { 关于java -
我制作了一款游戏,我们控制一艘宇宙飞船,可以发射激光摧毁来自顶部的小行星。但在游戏过程中,每当它抛出 IndexOutOfBoundsException 时,我的游戏就会卡住。我不知道为什么会这样。请
我正在尝试实现合并排序,但我不断收到 IndexOutOfBoundsException 并且我无法找出原因。 我已经调试了我的程序,并且在此函数中我从未使用无效索引访问数组。引发异常的行也与抛出异常
我无法弄清楚为什么我的代码出现 IndexOutOfBoundsException。我想知道是否有人可以成为我的额外眼睛来帮助我发现错误。我正在手动尝试这个,但我认为在浏览代码时我遗漏了一些东西。 代
为什么我会收到此错误? Caused by: java.lang.IndexOutOfBoundsException: Invalid index 1, size is 0 at java.util.
我不知道这是否是一个简单的问题,但我只是看不出问题是什么。我现在从 Google Play 中的应用收到了三份关于 points.get(++i) 处的 IndexOutOfBoundsExcepti
如何执行以下内容 String p = "abcd"; System.out.print(p.substring(4)); 不会导致java.lang.IndexOutOfBoundsExceptio
我是一名优秀的程序员,十分优秀!