堆栈跟踪:
java.lang.NullPointerException
at android.widget.ListView.removeFooterView(ListView.java:432)
at com.app.mobileapp.MainActivity$getValues.onPostExecute(MainActivity.java:666)
第666行:
listView.removeFooterView(footerView);
但绝对可以很好地创建 ListView 和 FooterView 。因为我可以在第666行之前将页脚设置为列表视图:
listView.addFooterView(footerView);
mAdapter = new mainAdapter(MainActivity.this, item_list, listView);
if (result.equals("empty")) {
((TextView) footerView.findViewById(R.id.footer))
.setText("No values");
listView.setAdapter(mAdapter);
} else if (result.equals("success")) {
listView.removeFooterView(footerView);
listView.setAdapter(mAdapter);
}
“空”的情况也可以。页脚视图显示“无值”。但是“成功”案件崩溃了。
这适用于 Android 4.0 + ,但在 2.3.6 时崩溃。
答案 0 :(得分:0)
问题是,如果成功,您在尝试删除页脚视图,然后将其添加到列表视图中。这就是你获得NPE的原因。
listView.addFooterView(footerView);
mAdapter = new mainAdapter(MainActivity.this, item_list, listView);
if (result.equals("empty")) {
((TextView) footerView.findViewById(R.id.footer))
.setText("No values");
listView.setAdapter(mAdapter);
} else if (result.equals("success")) {
listView.setAdapter(mAdapter);
listView.removeFooterView(footerView);
}
试用此代码:祝你好运
答案 1 :(得分:0)
它不是一个如何删除页脚视图的答案,但我有两个可能的解决方案:
1.为这个具体案例提供一个提示:不要立即添加和删除,为什么不检查是否需要添加,然后才添加?例如:
mAdapter = new mainAdapter(MainActivity.this, item_list, listView); if ("empty".equals(result)) { ((TextView) footerView.findViewById(R.id.footer)) .setText("No values"); listView.addFooterView(footerView); listView.setAdapter(mAdapter); } else if ("success".equals(result)) listView.setAdapter(mAdapter);
2.如果代码不适用于旧版本的android,你可以将页脚视图作为footerView真实内容的容器(例如FrameLayout),并让它永远保留。如果它需要填充内容,请填写,如果不是,请不要。
答案 2 :(得分:0)
发件人:强>
Crash on ListView.removeFooterView(View)
2.3.6上的Android版公共boolean removeFooterView(View v)
的问题,它不会检查适配器是否已经设置为ListView。
所以,我所要做的就是检查:
listView.getAdapter() != null;
删除 footerView 。
之前