没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
Android开发之开发之ListView列表刷新和加载更多实现方法列表刷新和加载更多实现方法
主要介绍了Android开发之ListView列表刷新和加载更多实现方法,实例分析了ListView列表操作的相关技巧,需要的朋友可以参考下
本文实例讲述了Android开发之ListView列表刷新和加载更多实现方法。分享给大家供大家参考。具体如下:
上下拉实现刷新和加载更多的ListView,如下:
package com.sin.android.ui;
import android.content.Context;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.TextView;
/**
* 动态刷新和加载数据ListView
* @author RobinTang
*
*/
public class DynamicListView extends ListView implements OnScrollListener {
/**
* 监听器
* 监听控件的刷新或者加载更多事件
* 所有的条目事件都会有一个偏移量,也就是position应该减1才是你适配器中的条目
* @author RobinTang
*
*/
public interface DynamicListViewListener {
/**
*
* @param dynamicListView
* @param isRefresh 为true的时候代表的是刷新,为false的时候代表的是加载更多
* @return true:刷新或者加载更多动作完成,刷新或者加载更多的动画自动消失 false:刷新或者加载更多为完成,需要在数据加载完成之后去调用控件的doneRefresh()或者doneMore()方法
*/
public boolean onRefreshOrMore(DynamicListView dynamicListView, boolean isRefresh);
}
/**
* 状态控件(StatusView,列表头上和底端的)的状态枚举
* @author RobinTang
*
*/
enum RefreshStatus {
none, normal, willrefresh, refreshing
}
/**
* 状态控件
* @author RobinTang
*
*/
class StatusView extends LinearLayout {
public int height;
public int width;
private ProgressBar progressBar = null;
private TextView textView = null;
private RefreshStatus refreshStatus = RefreshStatus.none;
private String normalString = "下拉刷新";
private String willrefreshString = "松开刷新";
private String refreshingString = "正在刷新";
public StatusView(Context context, AttributeSet attrs) {
super(context, attrs);
initThis(context);
}
public StatusView(Context context) {
super(context);
initThis(context);
}
private void initThis(Context context) {
this.setOrientation(LinearLayout.HORIZONTAL);
this.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL);
progressBar = new ProgressBar(context);
progressBar.setLayoutParams(new LinearLayout.LayoutParams(30, 30));
textView = new TextView(context);
textView.setPadding(5, 0, 0, 0);
this.addView(progressBar);
this.addView(textView);
int w = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
int h = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
this.measure(w, h);
height = this.getMeasuredHeight();
width = this.getMeasuredWidth();
this.setRefreshStatus(RefreshStatus.normal);
}
public RefreshStatus getRefreshStatus() {
return refreshStatus;
}
public void setRefreshStatus(RefreshStatus refreshStatus) {
if (this.refreshStatus != refreshStatus) {
this.refreshStatus = refreshStatus;
if(refreshStatus == RefreshStatus.refreshing){
this.progressBar.setVisibility(View.VISIBLE);
}
else{
this.progressBar.setVisibility(View.GONE);
}
refreshStatusString();
this.invalidate();
}
}
private void refreshStatusString() {
switch (refreshStatus) {
case normal:
textView.setText(normalString);
progressBar.setProgress(0);
break;
case willrefresh:
textView.setText(willrefreshString);
break;
case refreshing:
textView.setText(refreshingString);
break;
default:
break;
}
}
/**
* 设置状态字符串
* @param normalString 平时的字符串
* @param willrefreshString 松开后刷新(或加载)的字符串
* @param refreshingString 正在刷新(或加载)的字符串
*/
public void setStatusStrings(String normalString, String willrefreshString, String refreshingString){
this.normalString = normalString;
资源评论
weixin_38693586
- 粉丝: 7
- 资源: 923
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功