原文链接:http://www.cnblogs.com/smyhvae/archive/2016/08/26/5810471.html
ListView的模板写法
ListView模板写法的完整代码:
•android代码优化----ListView中自定义adapter的封装(ListView的模板写法)
以后每写一个ListView,就这么做:直接导入ViewHolder.java和ListViewAdapter,然后写一个自定义adapter继承自ListViewAdapter就行了。
ListView中动态显示和隐藏Header&Footer
如果需要动态的显示和隐藏footer的话,按照惯例,误以为直接通过setVisibility中的View.GONE就可以实现。但是在实际使用中发现并不是这样的。
例如,先加载footer布局:
1
2
3
|
private
View mFooter;
mFooter = LayoutInflater.from(
this
).inflate(R.layout.footer,
null
);
mListView.addFooterView(mFooter);
|
如果想动态隐藏这个footer,惯性思维是直接设置footer为gone:(其实这样做是不对的)
1
|
mFooter.setVisibility(View.GONE);
|
实际上,直接设置GONE后,虽然元素是隐藏了,但是还是占用着那个区域,此时和View.INVISIBILE效果一样。
footer的正确使用方法如下:
1、方法一:
(1)布局文件:在footer布局文件的最外层再套一层LinearLayout/RelativeLayout,我们称为footerParent。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
layout_footer_listview.xml:(完整版代码)
<?xml version=
"1.0"
encoding=
"utf-8"
?>
<LinearLayout
android:id=
"@+id/mFooterparent"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"#FFFFFF"
android:gravity=
"center"
android:orientation=
"vertical"
>
<LinearLayout
android:id=
"@+id/mFooter"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:gravity=
"center"
>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"40dp"
android:layout_centerVertical=
"true"
android:layout_marginLeft=
"10dp"
android:gravity=
"center"
android:text=
"查看更多"
android:textColor=
"#ff0000"
android:textSize=
"20sp"
/>
</LinearLayout>
</LinearLayout>
|
(2)加载footer和footerParent的布局:
1
2
3
4
5
6
|
private
View mFooter;
private
View mFooterParent;
mFooterParent = LayoutInflater.from(getActivity()).inflate(R.layout.footerparent_listview,
null
);
mFooter = mFooterParent.findViewById(R.id.footer);
listView.addFooterView(mFooterParent);
mFooterParent.setOnClickListener(MainActivity.
this
);
|
(3)设置footer为gone:(不是设置footerParent为gone)
1
|
mFooter.setVisibility(View.GONE);
|
2、方法二:
或者直接在代码中为footer添加footerParent也可以,如下:
1
2
3
4
5
|
private
View mFooter;
mFooter = LayoutInflater.from(getActivity()).inflate(R.layout.footer_listview,
null
);
LinearLayout mFooterParent =
new
LinearLayout(context);
mFooterParent.addView(mFooter);
listView.addFooterView(mFooterParent);
|
当需要隐藏footer的时候,设置footer为gone:(不是设置footerParent为gone)
1
|
mFooter.setVisibility(View.GONE);
|
以上所述是小编给大家介绍的Android ListView中动态显示和隐藏Header&Footer的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!