作者:carefulff | 来源:互联网 | 2023-07-03 14:44
AndroidListView中动态显示和隐藏Header&Footer的方法-ListView的模板写法ListView模板写法的完整代码:•android代码优化----Lis
ListView的模板写法
ListView模板写法的完整代码:
•android代码优化----ListView中自定义adapter的封装(ListView的模板写法)
以后每写一个ListView,就这么做:直接导入ViewHolder.java和ListViewAdapter,然后写一个自定义adapter继承自ListViewAdapter就行了。
ListView中动态显示和隐藏Header&Footer
如果需要动态的显示和隐藏footer的话,按照惯例,误以为直接通过setVisibility中的View.GONE就可以实现。但是在实际使用中发现并不是这样的。
例如,先加载footer布局:
private View mFooter;
mFooter = LayoutInflater.from(this).inflate(R.layout.footer, null); //加载footer的布局
mListView.addFooterView(mFooter);
如果想动态隐藏这个footer,惯性思维是直接设置footer为gone:(其实这样做是不对的)
mFooter.setVisibility(View.GONE); //隐藏footer
实际上,直接设置GONE后,虽然元素是隐藏了,但是还是占用着那个区域,此时和View.INVISIBILE效果一样。
footer的正确使用方法如下:
1、方法一:
(1)布局文件:在footer布局文件的最外层再套一层LinearLayout/RelativeLayout,我们称为footerParent。
layout_footer_listview.xml:(完整版代码)
(2)加载footer和footerParent的布局:
private View mFooter; //footer
private View mFooterParent; //footer的最外面再套一层LinearLayout
mFooterParent = LayoutInflater.from(getActivity()).inflate(R.layout.footerparent_listview, null);//加载footerParent布局
mFooter = mFooterParent.findViewById(R.id.footer);
listView.addFooterView(mFooterParent); //把footerParent放到ListView当中
mFooterParent.setOnClickListener(MainActivity.this); //绑定监听事件,点击查看全部列表
(3)设置footer为gone:(不是设置footerParent为gone)
mFooter.setVisibility(View.GONE);
2、方法二:
或者直接在代码中为footer添加footerParent也可以,如下:
private View mFooter; //footer
mFooter = LayoutInflater.from(getActivity()).inflate(R.layout.footer_listview, null);//加载footer布局
LinearLayout mFooterParent = new LinearLayout(context);
mFooterParent.addView(mFooter);//在footer的最外面再套一层LinearLayout(即footerParent)
listView.addFooterView(mFooterParent);//把footerParent放到ListView当中
当需要隐藏footer的时候,设置footer为gone:(不是设置footerParent为gone)
mFooter.setVisibility(View.GONE);