zoukankan      html  css  js  c++  java
  • ListView中动态显示和隐藏Header&Footer

    ListView的模板写法

    ListView模板写法的完整代码:

    以后每写一个ListView,就这么做:直接导入ViewHolder.javaListViewAdapter,然后写一个自定义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:(完整版代码)

    <?xml version="1.0" encoding="utf-8"?>
    
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        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的布局:

    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);
    
  • 相关阅读:
    网络通信socket连接数上限
    图像轮廓的提取
    C# 基础类型的快速转换
    十大编程算法助程序员走上高手之路
    椭圆的曲线模拟
    覆盖父类方法的new和override关键字
    BackgroundWorker异步更新界面
    小程序开发(七)利用SQL实现access_token的自动通知
    漫水填充(泛洪填充、油漆桶)的C#实现(解决堆溢出问题)
    SQL中获取最近的N个半年度
  • 原文地址:https://www.cnblogs.com/qianguyihao/p/5810471.html
Copyright © 2011-2022 走看看