116_滑动加载数据


滑动加载数据


我们来实现一个功能

就是一个ListView

先加载一部分数据

然后我们滑动

滑动到最下方的时候

就加载更多的数据

 

这样的话最下方有一个简单的布局

就是2个重叠的TextView

表示2个状态

1.加载中...

2.重新加载

 

我们先把这个简单的布局写出来

 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

                android:layout_width="match_parent"

                android:layout_height="60dp"

                android:background="#bbbbbb">

 

    <TextView

        android:layout_width="match_parent"

        android:gravity="center"

        android:textSize="30sp"

        android:text="正在加载中..."

        android:id="@+id/tv_load_more_loading"

        android:layout_height="match_parent"/>

 

    <TextView

        android:layout_width="match_parent"

        android:gravity="center"

        android:textSize="30sp"

        android:text="重新加载"

        android:id="@+id/tv_load_more_reload"

        android:layout_height="match_parent"/>

</RelativeLayout>

 

 

然后我们回到ListView

 

 

我们要根据状态来显示这两个TextView

来三个常量来表示

然后我们用set方法在外部设置状态

最后根据状态来设置TextView的显示

    public static final int HAS_MORE = 0;

    public static final int NO_MORE = 1;

    public static final int ERROR_MORE = 2;

 

    private int mCurrentState = HAS_MORE;

 

    public void setCurrentState(int currentState) {

        mCurrentState = currentState;

    }

 

    public void showViewByState() {

        switch (mCurrentState) {

            case HAS_MORE:

                mTv_loading.setVisibility(View.VISIBLE);

                mTv_reload.setVisibility(View.GONE);

                break;

            case NO_MORE:

                mTv_loading.setVisibility(View.GONE);

                mTv_reload.setVisibility(View.GONE);

                break;

            case ERROR_MORE:

                mTv_loading.setVisibility(View.GONE);

                mTv_reload.setVisibility(View.VISIBLE);

                break;

        }

    }

 

 

 

 

然后我们要把这个布局加入到ListView里面

这样的话ListView里面就有了两种条目

怎么加入两种不一样的条目呢

 

我们的这个条目是放在ListView的最下面的

那么我们可以根据位置来判断然后显示条目

 

我们要覆写两个方法

 

    public static final int NORMAL_ITEM = 0;

    public static final int MORE_ITEM = 1;

 

    @Override

    public int getItemViewType(int position) {

 

        if (position == mList.length) {

            return MORE_ITEM;

        }

 

        return NORMAL_ITEM;

    }

 

    @Override

    public int getViewTypeCount() {

        return 2;

    }

 

 

 

待续...有点事...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值