在ListView的后面添加View

ListView是一个在Android当中十分重要的一个组件。大部分的APP都要利用到ListView这个组件,而在这个组件当中,若你使用的是线性布局(LinearLayout)则是无法在xml中定义一个紧接着ListView的末尾的View的,因此,我们可以利用ListView当中附带的方法来实现这个布局

代码实现

首先先建立一个在ListView的下面你想建立的布局(相应的布局文件要在xml当中写出)

    //foot view
    private View footView;

然后,利用ListView当中的addFooterView的方法将这个布局加入到ListView当中去

        //获取Layout
        footView = getLayoutInflater().inflate(R.layout.listview_button,null);

        //将layout的内容加入到listView当中去
        listView.addFooterView(footView);

同样,如果你想在ListView的头部加入这个布局,也可以调用ListView的addHeaderView这个方法

listView.addHeaderView(headerView);

不过值得注意的是,使用这个方法加入的View实际上是在ListView当中加入的布局,它的setAdapter的方法的实现其中一部分如下:

        if (mHeaderViewInfos.size() > 0|| mFooterViewInfos.size() > 0) {
            mAdapter = wrapHeaderListAdapterInternal(mHeaderViewInfos, mFooterViewInfos, adapter);
        } else {
            mAdapter = adapter;
        }

也就是说,在加入adapter的时候,会先去检查是否有头布局和尾布局,若存在这些布局,则将这些布局都加入到adapter当中一起初始化,因此,在使用getCount方法的时候会出现一些与实际加入的adapter的数据集的数量不同的情况。

而且,在有头布局的情况,若使用里面的position的变量的时候,变量大小要+1,因为此时的布局数量已经不同了

猜你喜欢

转载自blog.csdn.net/a591243801/article/details/72743159