您的位置:首页 > 其它

ListView实现上啦加载更多数据

2015-03-18 09:48 393 查看
package com.cattsoft.deliersystem.view;

import com.cattsoft.deliersystem.R;

import android.content.Context;

import android.util.AttributeSet;

import android.view.LayoutInflater;

import android.view.View;

import android.widget.AbsListView;

import android.widget.ListView;

public class LoadListView extends ListView implements
android.widget.AbsListView.OnScrollListener {

private View footer;
/** Item总数 */
private int totalItemCount;
/** 最后一个可见的Item */
private int lastVisibleItem;
/** 是否正在加载 */
private boolean isLoading;
private OnLoadingListener onLoading;

public LoadListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
initView(context);
}

public LoadListView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}

public LoadListView(Context context) {
this(context, null);
}

private void initView(Context context) {
footer = LayoutInflater.from(context).inflate(R.layout.load_footer,
null);
footer.setVisibility(View.GONE);
this.addFooterView(footer);
this.setOnScrollListener(this);
}

@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (totalItemCount == lastVisibleItem
&& scrollState == SCROLL_STATE_IDLE) {
if (!isLoading) {
isLoading = true;
footer.setVisibility(View.VISIBLE);
onLoading.loading();
}
}
}

@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
this.lastVisibleItem = firstVisibleItem + visibleItemCount;
this.totalItemCount = totalItemCount;
}

public void setOnLoadListener(OnLoadingListener onLoading){
this.onLoading = onLoading;
}

public void loadComplete(){
isLoading = false;
footer.setVisibility(View.GONE);
}

/**
* 通过接口回调的方式加载数据
* @author 肖秋
*
*/
public interface OnLoadingListener{
public void loading();
}
}

load_footer.xml文件

<?xml version="1.0" encoding="utf-8"?>

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

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical" >

    <LinearLayout

        android:id="@+id/load_layout"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:gravity="center"

        android:orientation="horizontal"

        android:paddingBottom="10dp"

        android:paddingTop="10dp" >

        <ProgressBar

            style="?android:attr/progressBarStyleSmall"

            android:layout_width="21dip"

            android:layout_height="21dip"

            android:indeterminate="false"

            android:indeterminateDrawable="@drawable/progress_loading" />

        <TextView

            android:layout_marginLeft="8dp"

            android:textColor="@color/gray_border"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:text="正在加载..." />

    </LinearLayout>

</LinearLayout>

progress_loading.xml文件设置ProgressBar进度为帧动画,和IOS一样。

<?xml version="1.0" encoding="UTF-8"?>

<animation-list xmlns:android="http://schemas.android.com/apk/res/android"

    android:oneshot="false" >

    <item

        android:drawable="@drawable/loading_01"

        android:duration="120"/>

    <item

        android:drawable="@drawable/loading_02"

        android:duration="120"/>

    <item

        android:drawable="@drawable/loading_03"

        android:duration="120"/>

    <item

        android:drawable="@drawable/loading_04"

        android:duration="120"/>

    <item

        android:drawable="@drawable/loading_05"

        android:duration="120"/>

    <item

        android:drawable="@drawable/loading_06"

        android:duration="120"/>

    <item

        android:drawable="@drawable/loading_07"

        android:duration="120"/>

    <item

        android:drawable="@drawable/loading_08"

        android:duration="120"/>

    <item

        android:drawable="@drawable/loading_09"

        android:duration="120"/>

    <item

        android:drawable="@drawable/loading_10"

        android:duration="120"/>

    <item

        android:drawable="@drawable/loading_11"

        android:duration="120"/>

    <item

        android:drawable="@drawable/loading_12"

        android:duration="120"/>

</animation-list>

图片文件在下面
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: