滑动加载数据
我们来实现一个功能
就是一个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;
}
待续...有点事...