关于在安卓学习中遇到的,需要做一个下拉加载。
根据百度后自己尝试制作了一下。
首先新建一个java类让他继承并实现ListView
会实现下面的几个
public LoadListView(Context context) {
super(context);
}
public LoadListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public LoadListView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public LoadListView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
为他们对加入一个initview(context)方法。
private void initView(Context context)
{
LayoutInflater inflater = LayoutInflater.from(context);
footer = inflater.inflate(R.layout.layout_foot_boot,null);
footer.findViewById(R.id.load_layout).setVisibility(View.GONE);
this.addFooterView(footer);
this.setOnScrollListener(this);
}
footer 是一个下拉加载时候播放的动画=-=,例如转圈的
会在一开始初始化一下他的
View footer;
写好以上的代码后,开始监听滚动条
需要实现listview 的滚动监听
public class LoadListView extends ListView implements AbsListView.OnScrollListener
你需要自己定义好
int totalItemCount;//总数量
int lastVisibleItem;//最后一个可见
@Override
public void onScroll(AbsListView absListView, int i, int i1, int i2) {
this.lastVisibleItem = i + i1;
this.totalItemCount = i2;
}
@Override
public void onScrollStateChanged(AbsListView absListView, int i) {
if(totalItemCount == lastVisibleItem && i == SCROLL_STATE_IDLE){
if(!isLoading){
isLoading = true;
footer.findViewById(R.id.load_layout).setVisibility(View.VISIBLE);
//加载更多数据
iLoadListener.onLoad();
}
}
}
之后定义一下,当数据加载完毕和接口
//加载完毕
public void loadComplete(){
isLoading = false;
footer.findViewById(R.id.load_layout).setVisibility(View.GONE);
}
public void setInterface(ILoadListener iLoadListener){
this.iLoadListener = iLoadListener;
}
//加载更多数据的回调接口
public interface ILoadListener{
public void onLoad();
}
这样一个下拉加载的listview就被封装好了