zoukankan      html  css  js  c++  java
  • XListview刷新和加载

    //继承IXListViewListener
    public class MainActivity extends Activity implements OnItemClickListener,IXListViewListener

    private int STATE_1 = 1;
    private int STATE_2 = 2;
    private int STATE_3;

    lv2 = (XListView) findViewById(R.id.lv);
    lv2.setPullLoadEnable(true);//上拉刷新
    lv2.setXListViewListener(this);//给xListView设置监听

    //判断,如果有数据先清空
     if (STATE_3 == STATE_1) {
    news .clear();
    }

    //更新适配器
    if (adapter == null) {
    adapter = new MyAdapter(news,this);
    lv2.setAdapter(adapter);
    } else {
     adapter .notifyDataSetChanged();
     }
     load();

    public void load(){
    //停止更新
    lv2.stopRefresh();
    //加载更多
    lv2.stopLoadMore();
    //更新时间
    lv2.setRefreshTime("刚刚");
    }

    @Override
    public void onRefresh() {
    STATE_3 = STATE_1;//设置判断
    huodeshuju();
    }

    @Override
    public void onLoadMore() {
    STATE_3 = STATE_2;
    huodeshuju();
    }

    <string name="xlistview_header_hint_normal">下拉刷新</string>
    <string name="xlistview_header_hint_ready">松开刷新数据</string>
    <string name="xlistview_header_hint_loading">正在加载...</string>
    <string name="xlistview_header_last_time">上次更新时间:</string>
    <string name="xlistview_footer_hint_normal">查看更多</string>
    <string name="xlistview_footer_hint_ready">松开载入更多</string>

    //XlistviewHandler中

    public class XListViewHeader extends LinearLayout {
    private LinearLayout mContainer;
    private ImageView mArrowImageView;
    private ProgressBar mProgressBar;
    private TextView mHintTextView;
    private int mState = STATE_NORMAL;

    private Animation mRotateUpAnim;
    private Animation mRotateDownAnim;

    private final int ROTATE_ANIM_DURATION = 180;

    public final static int STATE_NORMAL = 0;
    public final static int STATE_READY = 1;
    public final static int STATE_REFRESHING = 2;

    public XListViewHeader(Context context) {
    super(context);
    initView(context);
    }

    /**
    * @param context
    * @param attrs
    */
    public XListViewHeader(Context context, AttributeSet attrs) {
    super(context, attrs);
    initView(context);
    }

    private void initView(Context context) {
    // 初始情况,设置下拉刷新view高度为0
    LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
    LayoutParams.FILL_PARENT, 0);
    // 将下拉刷新的view添加进来
    mContainer = (LinearLayout) LayoutInflater.from(context).inflate(
    R.layout.xlistview_header, null);
    addView(mContainer, lp);
    setGravity(Gravity.BOTTOM);

    mArrowImageView = (ImageView) findViewById(R.id.xlistview_header_arrow);
    mHintTextView = (TextView) findViewById(R.id.xlistview_header_hint_textview);
    mProgressBar = (ProgressBar) findViewById(R.id.xlistview_header_progressbar);
    // 准备向上和向下的动画
    mRotateUpAnim = new RotateAnimation(0.0f, -180.0f,
    Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,
    0.5f);
    // 设置旋转时间间隔
    mRotateUpAnim.setDuration(ROTATE_ANIM_DURATION);
    mRotateUpAnim.setFillAfter(true);
    mRotateDownAnim = new RotateAnimation(-180.0f, 0.0f,
    Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,
    0.5f);
    mRotateDownAnim.setDuration(ROTATE_ANIM_DURATION);
    mRotateDownAnim.setFillAfter(true);
    }

    public void setState(int state) {
    if (state == mState)
    return;
    // 如果当前状态是正在刷新
    if (state == STATE_REFRESHING) { // 显示进度
    // 移除动画
    mArrowImageView.clearAnimation();
    // 设置imageView不可见
    mArrowImageView.setVisibility(View.INVISIBLE);
    // 设置progressBar可见
    mProgressBar.setVisibility(View.VISIBLE);
    } else { // 显示箭头图片
    // 只要不是正在刷新,进度条可见,imageView不可见
    mArrowImageView.setVisibility(View.VISIBLE);
    mProgressBar.setVisibility(View.INVISIBLE);
    }

    switch (state) {
    case STATE_NORMAL:
    if (mState == STATE_READY) {
    mArrowImageView.startAnimation(mRotateDownAnim);
    }
    if (mState == STATE_REFRESHING) {
    mArrowImageView.clearAnimation();
    }
    mHintTextView.setText(R.string.xlistview_header_hint_normal);
    break;
    case STATE_READY:
    if (mState != STATE_READY) {
    mArrowImageView.clearAnimation();
    mArrowImageView.startAnimation(mRotateUpAnim);
    mHintTextView.setText(R.string.xlistview_header_hint_ready);
    }
    break;
    case STATE_REFRESHING:
    mHintTextView.setText(R.string.xlistview_header_hint_loading);
    break;
    default:
    }
    mState = state;
    }

    public void setVisiableHeight(int height) {
    if (height < 0)
    height = 0;
    LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) mContainer
    .getLayoutParams();
    lp.height = height;
    mContainer.setLayoutParams(lp);
    }

    public int getVisiableHeight() {
    return mContainer.getLayoutParams().height;
    }

    }

  • 相关阅读:
    2-SAT
    CDQ分治
    整体二分
    未完成
    [BZOJ1857][SCOI2010]传送带-[三分]
    [LCT应用]
    [胡泽聪 趣题选讲]大包子环绕宝藏-[状压dp]
    [清华集训2015 Day2]矩阵变换-[稳定婚姻模型]
    [清华集训2015 Day1]主旋律-[状压dp+容斥]
    [清华集训2015 Day1]玛里苟斯-[线性基]
  • 原文地址:https://www.cnblogs.com/changyiqiang/p/5715999.html
Copyright © 2011-2022 走看看