SwipeRefreshLayout实现自动刷新
mMTrefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
//加载数据
loadData();
Toast.makeText(getContext(), "正在加载数据", Toast.LENGTH_SHORT).show();
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
//隐藏加载数据的圈
mMTrefreshLayout.setRefreshing(false);
}
}, 2000);
}
});
界面初始化时调用
mMTrefreshLayout.autoRefresh();
AutoSwipeRefreshLayout:
package com.itheima.oschina.view;
import android.content.Context;
import android.support.v4.widget.SwipeRefreshLayout;
import android.util.AttributeSet;
import android.view.View;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
/**
* Created by admin on 2017/3/26.
*/
public class AutoSwipeRefreshLayout extends SwipeRefreshLayout {
public AutoSwipeRefreshLayout(Context context) {
super(context);
}
public AutoSwipeRefreshLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
/**
* 自动刷新
*/
public void autoRefresh() {
try {
Field mCircleView =
//)getDeclaredField获得某个类的所有申明的字段,即包括public、private和proteced,但是不包括父类的申明字段。
SwipeRefreshLayout.class.getDeclaredField("mCircleView");
mCircleView.setAccessible(true);
View progress = (View) mCircleView.get(this);
progress.setVisibility(VISIBLE);
Method setRefreshing = SwipeRefreshLayout.class.getDeclaredMethod("setRefreshing", boolean.class, boolean.class);
setRefreshing.setAccessible(true);
setRefreshing.invoke(this, true, true);
} catch (Exception e) {
e.printStackTrace();
}
}
}