Android listview页脚视图
我对页脚视图有问题。我使用动态加载项创建列表视图。当按钮在页脚视图中单击时。页脚在需要时通过调用以下两种方法附加到列表视图:Android listview页脚视图,android,android-listview,Android,Android Listview,我对页脚视图有问题。我使用动态加载项创建列表视图。当按钮在页脚视图中单击时。页脚在需要时通过调用以下两种方法附加到列表视图: protected void addFooterView() { removeFooterView(); searchListView.post(new Runnable() { @Override public void run() { ListAdapter
protected void addFooterView() {
removeFooterView();
searchListView.post(new Runnable() {
@Override
public void run() {
ListAdapter adapter = searchListView.getAdapter();
searchListView.setAdapter(null);
searchListView.addFooterView(footerView);
searchListView.setAdapter(adapter);
}
});
}
protected void removeFooterView() {
searchListView.post(new Runnable() {
@Override
public void run() {
if (searchListView.getFooterViewsCount() > 0) {
ListAdapter adapter = searchListView.getAdapter();
searchListView.setAdapter(null);
while (searchListView.getFooterViewsCount() > 0) {
searchListView.removeFooterView(footerView);
}
searchListView.setAdapter(adapter);
}
}
});
}
膨胀视图:
private void declareViewAndButton(View view) {
this.searchListView = (ListView) view.findViewById(R.id.searchListView);
this.footerView = LayoutInflater.from(getActivity()).inflate(R.layout.search_list_view_footer, searchListView, false);
}
所以,当页脚视图位于可见位置列表视图的底部时。通过滚动返回,页脚视图高度大小会动态变化。如何修复它??或者告诉我哪里可以找到问题的原因?对不起,我说的是英语。从KITKAT api开始,您可以在任何地方调用aading/removing footer和header方法,设置适配器与否无关紧要。 就像在正式文档中一样,在设置适配器之前,需要调用添加/删除页脚和页眉视图。但如果您需要管理页脚而不是页眉,这几乎是正确的。在一些设备的页脚工作成功后,在另一个设备上需要单重设适配器,工作正常后。我不知道,这是错误或功能 因此,在一些实验之后,我编写了添加和删除页脚视图的方法。工作出色:
protected void addFooterView() {
removeFooterView();
searchListView.post(new Runnable() {
@Override
public void run() {
searchListView.addFooterView(footerView);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
int lastViewedPosition = searchListView.getFirstVisiblePosition();
View v = searchListView.getChildAt(0);
int topOffset = (v == null) ? 0 : v.getTop();
searchListView.setAdapter(searchAdapter);
searchListView.setSelectionFromTop(lastViewedPosition, topOffset);
}
}
});
}
protected void removeFooterView() {
searchListView.post(new Runnable() {
@Override
public void run() {
while (searchListView.getFooterViewsCount() > 0) {
searchListView.removeFooterView(footerView);
}
}
});
}
protectedvoid addFooterView()受保护{
removeFooterView();
searchListView.post(新的Runnable(){
@凌驾
公开募捐{
searchListView.addFooterView(footerView);
if(Build.VERSION.SDK_INT0){
searchListView.removeFooterView(footerView);
}
}
});
}
在19,16,10 api上测试