package com.dh.foundation.widget.netlistview;
import android.view.View;
import android.widget.AbsListView;
import com.dh.foundation.adapter.NetListViewBaseAdapter;
import com.dh.foundation.utils.RequestParams;
import java.util.List;
/**
* NetListView常规交互接口
* Created By: Seal.Wu
* Date: 2015/9/28
* Time: 17:35
*/
interface NLVCommonInterface {
/**
* 设置加载更多的footView
*
* @param loadMoreView 加载更多的footView
*/
void setLoadMoreView(View loadMoreView);
/**
* 设置ListView的EmptyView
*
* @param emptyViewId ListView的EmptyView
*/
void setEmptyViewId(int emptyViewId);
/**
* 设置网络请求错显示的view的id
*
* @param netErrorViewId 网络请求错显示的view的id
*/
void setNetErrorViewId(int netErrorViewId);
/**
* 获取网络出错提示的View
*
* @return 网络出错提示的View
*/
View getNetErrorView();
/**
* 设置是否弹出提示"已经全部加载"
*
* @param isLoadOkToast 是否弹出提示"已经全部加载"
*/
void setLoadOkToast(boolean isLoadOkToast);
/**
* 是否设置网络出错提示
*
* @param isNetErrorToast true:代表设置
*/
void setNetErrorToast(boolean isNetErrorToast);
/**
* 设置刷新时是否显示等待框
*
* @param isShowProgressDialog 是否显示等待框
*/
void setIsShowProgressDialog(boolean isShowProgressDialog);
/**
* 刷新时是否显示等待框
*
* @return true:代表是
*/
boolean isShowProgressDialog();
/**
* 设置加载更多使能功能接口
*
* @param loadMoreAbleListener 加载更多使能功能接口
*/
void setLoadMoreAbleListener(LoadMoreAbleListener loadMoreAbleListener);
/**
* 设置加载完成监听接口
*
* @param onLoadFinishListener 加载完成监听接口
*/
void setOnLoadFinishListener(OnLoadFinishListener onLoadFinishListener);
/**
* 设置刚开始加载监听器
*
* @param onLoadStartListener 刚开始加载监听器
*/
void setOnLoadStartListener(OnLoadStartListener onLoadStartListener);
/**
* 设置ListView滚动监听接口
*
* @param onScrollListener 滚动监听接口
*/
void setOnScrollListener(AbsListView.OnScrollListener onScrollListener);
/**
* 获取当前ListView分页的页码数
*
* @return 当前ListView分页的页码数
*/
int getPageNo();
/**
* 初始化网络处理功能ListView
*
* @param params 参数
* @param adapter 专用适配器
* @param pageName 页码名称
*/
void initNetListView(String baseAddress, RequestParams params, NetListViewBaseAdapter adapter, String pageName);
/**
* 初始化网络处理功能ListView
*
* @param params 参数
* @param adapter 专用适配器
* @param pageName 页码名称
* @param emptyView 当无数据时指定显示的view
*/
void initNetListView(String baseAddress, RequestParams params, NetListViewBaseAdapter adapter, String pageName, View emptyView);
/**
* 刷新ListView数据
*/
void refreshData();
/**
* 主动调用加载更多
*/
void loadMore();
/**
* 可加载更多扩展全能接口
*
* @param <T> 网络获取的结果对象类型
*/
interface LoadMoreAbleListener<T> {
/**
* @param returnObj 当前请求服务器返回的请求结果对象
* @param allListData listView中全部的数据列表
* @return 是否可以加载更多
*/
boolean isLoadMoreAble(T returnObj, List<?> allListData);
/**
* 获取每次获取到的列表内容
*
* @param returnObj 服务器返回的整体对象
* @return 获取到的整体对象中和列表有关的列表数据
*/
List<?> getLoadedData(T returnObj);
}
/**
* 加载完成监听器
*/
interface OnLoadFinishListener<ReturnData> {
/**
* 当一次加载完成时调用
*
* @param isRefreshing 是否是刷新动作
* @param isLoadSuccess 是否成功通过网络请求到数据
* @param returnData 返回的数据对象
* @param error 失败时的错误提示
*/
void onLoadFinished(boolean isRefreshing, boolean isLoadSuccess, ReturnData returnData, Throwable error);
}
/**
* 开始加载数据监听器
*/
interface OnLoadStartListener {
/**
* 当刚开始加载时调用
*
* @param isRefreshing 是否是刷新
*/
void onLoadStart(boolean isRefreshing);
}
}