Android将页脚添加到ListView addFooterView()?
Posted
技术标签:
【中文标题】Android将页脚添加到ListView addFooterView()?【英文标题】:Android adding footer to ListView addFooterView()? 【发布时间】:2011-03-14 17:17:16 【问题描述】:我有一个 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_
android:layout_
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" />
【问题讨论】:
您可能也应该发布您的 XML。 可能需要更多代码,能否发布更详细的 logcat 报告? 它可能没有发现 R.id.loadMore 膨胀 抱歉忘记了刚刚添加的重要行...还添加了 id loadMore 所在的 xml 文件 【参考方案1】:好吧,我找到了解决我的问题的方法,如果我这样做,它会按预期工作:
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));
我猜,由于我将 null 作为父参数放入 inflater 中,因此该视图尚未添加到当前内容视图中,因此 mainActivity 无法找到它,现在因为我明确使用父视图由充气机返回以查找它正在工作的 TextView。
【讨论】:
我希望你能得到这个视图,我需要你的帮助在我的列表视图底部设置页脚,最初页脚出现在列表视图的底部并且它有点击选项来加载更多,点击事件后数据已加载,但每次单击页脚时页脚都会向下移动。让帮助我解决这个问题。 不确定您所说的“点击事件后数据已加载但页脚在每次点击页脚时向下移动”但我在获取新数据后所做的是创建一个新的适配器和然后再次调用“setListAdapter()”。然而,这使得列表从顶部开始,所以我通过调用 'getListView().setSelection(newPosition)' 来调整列表的位置希望有帮助! 使用 SDK 21,如果将 null 传递给inflate
,则会收到警告。相反,请使用mInflater.inflate(R.layout.list_load_more_row, getListView(), false)
。【参考方案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");
没有看到更多的代码,很难说真正的原因是什么。
【讨论】:
嘿,谢谢,你的权利似乎没有找到 loadMore...添加更多代码希望有帮助【参考方案3】: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
时,它就好了
【讨论】:
以上是关于Android将页脚添加到ListView addFooterView()?的主要内容,如果未能解决你的问题,请参考以下文章
在 Android 中加载动态项目时无法将页脚视图添加到列表视图
如何将页脚添加到 NavigationView - Android 支持设计库?