我对页脚视图有疑问。我通过动态加载项目创建列表视图。当按钮在页脚视图中单击时。页脚附加到列表视图时,通过调用两个下一个方法:
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);
}
因此,当页脚视图位于可见位置列表视图的底部时。并通过滚动返回,页脚视图高度大小动态变化。怎么解决?或者告诉我在哪里可以找到问题原因?抱歉我的英文。
答案 0 :(得分:1)
从KITKAT api开始你可以在任何地方调用aading / remove footer和header方法,设置适配器与否无关紧要。 就像在官方文档中说的那样,在设置适配器之前需要调用aading / remove footer和header view。但这几乎是正确的,如果在你的情况下需要管理页脚而不是标题。在一些设备页脚工作成功,另一个需要单个重置适配器,工作正常后。我不知道,这是bug还是功能!!
所以,经过一些实验,我写了添加和删除页脚视图方法。效果很好:
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);
}
}
});
}
在19,16,10 api上测试过。