我有一个ListView活动需要页脚到项目列表,以便您可以单击它,它会将更多项目加载到列表中。该列表支持我的字符串映射支持的SimpleAdapter,在设置适配器之前我这样做是为了添加页脚:
mInflater.inflate(R.layout.list_load_more_row, null);
TextView footer = (TextView) findViewById(R.id.loadMore);
getListView().addFooterView(footer);
setListAdapter(ListViewHelper.getAdapterForContentList(mContent, this));
但是我在调试器中得到了这个异常
显示java.lang.NullPointerException android.widget.ListView.clearRecycledState(ListView.java:489) android.widget.ListView.resetList(ListView.java:476) android.widget.ListView.setAdapter(ListView.java:417)
什么是错的,如何将我的页脚添加到列表中?
[编辑] 活动正在使用 list_load_more_row.xml:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/loadMore"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="17sp"
android:textStyle="bold"
android:textColor="#000000"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:gravity="center_horizontal|center_vertical"
android:text="@string/hello" />
答案 0 :(得分:21)
Alrighty Iv找到了我的问题的解决方案,如果我这样做它按预期工作:
View view = mInflater.inflate(R.layout.list_load_more_row, null);
TextView footer = (TextView) view.findViewById(R.id.loadMore);
getListView().addFooterView(footer);
setListAdapter(ListViewHelper.getAdapterForContentList(mContent, this));
我猜测因为我将inflater中的null作为父参数,所以视图尚未添加到当前内容视图中,因此mainActivity无法找到它,因为我明确使用父视图由inflater返回以查找它正在运行的TextView。
答案 1 :(得分:2)
正如ognian在上面的评论中所述,可能找不到loadMore。
您可以通过将代码更改为以下内容来查看是否存在此问题:
TextView footer = (TextView) findViewById(R.id.loadMore);
if ( footer != null ) {
getListView().addFooterView(footer);
setListAdapter(ListViewHelper.getAdapterForContentList(mContent, this));
} else {
throw new NullPointerException("footer is null");
}
没有看到更多的代码,很难说实际原因是什么。
答案 2 :(得分:0)
View footerView = getLayoutInflater().inflate(R.layout.search_footer,
mContentList, false);
LongButton mSearchMoreBtn = (LongButton) footerView
.findViewById(R.id.searchmore_btn);
mSearchMoreBtn.setText(R.string.search_moreapp);//the button to add
mSearchMoreBtn.setBackgroundResource(R.drawable.btn_long_selector);
mSearchMoreBtn.setOnClickListener(mSearchMoreBtnListener);
footerView.setOnClickListener(mLoadMoreAppsListener);
mContentList.addFooterView(footerView);
我不知道当我将mSearchMoreBtn
添加到ListView
footerView
时,这是错误的,而当我将footerView
添加到ListView
时,它很好