Android为ListView添加页脚addFooterView()?

时间:2010-07-12 09:21:53

标签: java android xml listview user-interface

我有一个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" />

3 个答案:

答案 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时,它很好