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上测试