2024年4月15日发(作者:)

花了一天时间写出了这个类来实现下拉刷新。

首先这是一个自定义的listView控件类,我在许多项目中都用到了它,效果很稳定。实现

也很简单。用的时候其他功能都和系统提供的ListView一样,就只是多了一个下拉刷新监

听。用这个类替代系统提供的ListView,下拉刷新再也不会烦恼了。(^o^)/~

希望对大家有用。

我写的自定义ListView的代码:

import ;

import t;

import uteSet;

import ;

import Inflater;

import Event;

import ;

import oup;

import Interpolator;

import Animation;

import tView;

import apter;

import iew;

import Layout;

import ew;

import llListener;

import ssBar;

import ew;

public class MyListView extends ListView implements OnScrollListener

{

private static final String TAG = "listview";

private final static int RELEASE_To_REFRESH = 0;

private final static int PULL_To_REFRESH = 1;

private final static int REFRESHING = 2;

private final static int DONE = 3;

private final static int LOADING = 4;

// 实际的padding的距离与界面上偏移距离的比例

private final static int RATIO = 3;

private LayoutInflater inflater;

private LinearLayout headView;

private TextView tipsTextview;

private TextView lastUpdatedTextView;

private ImageView arrowImageView;

private ProgressBar progressBar;

private RotateAnimation animation;

private RotateAnimation reverseAnimation;

// 用于保证startY的值在一个完整的touch事件中只被记录一次

private boolean isRecored;

private int headContentWidth;

private int headContentHeight;

private int startY;

private int firstItemIndex;

private int state;

private boolean isBack;

private OnRefreshListener refreshListener;

private boolean isRefreshable;

public MyListView(Context context) {

super(context);

init(context);

}

public MyListView(Context context, AttributeSet attrs) {

super(context, attrs);

init(context);

}

private void init(Context context) {

setCacheColorHint(ources().getColor(

sparent));

inflater = (context);

headView = (LinearLayout) e(,

null);

arrowImageView = (ImageView) headView

.findViewById(_arrowImageView);

imumWidth(70);

imumHeight(50);

progressBar = (ProgressBar) headView

.findViewById(_progressBar);

tipsTextview = (TextView)

ewById(_tipsTextView);

lastUpdatedTextView = (TextView) headView