SwipeRefrshLayout是Google官方更新的一个Widget,可以实现下拉刷新的效果。基本使用的方法如下:
setOnRefreshListener(OnRefreshListener):添加下拉刷新监听器
setRefreshing(boolean):显示或者隐藏刷新进度条
isRefreshing():检查是否处于刷新状态
setColorSchemeResources():设置进度条的颜色主题,最多设置四种,以前的setColorScheme()方法已经弃用了。
public class SwiperRefreshFragment extends Fragment implements TestAdapter.RecyclerViewItemListener {
private View view;
private SwipeRefreshLayout swiper_refresh;
private RecyclerView recycler_view;
private List<TestBean> testDatas;
private TestAdapter mAdapter;
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case 1:
mAdapter.notifyDataSetChanged();
swiper_refresh.setRefreshing(false);
break;
}
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_swiperefresh, container, false);
testDatas = new ArrayList<>();
initTestData();
initViews(view);
return view;
}
private void initViews(View view) {
recycler_view = (RecyclerView) view.findViewById(R.id.recycler_view);
swiper_refresh = (SwipeRefreshLayout) view.findViewById(R.id.swiper_refresh);
//GridView样式展示
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false);
recycler_view.setLayoutManager(linearLayoutManager);
mAdapter = new TestAdapter(testDatas, this);
recycler_view.setAdapter(mAdapter);
// //这句就是添加分隔线
// recycler_view.addItemDecoration(new MyDecoration(getActivity(), MyDecoration.VERTICAL_LIST));
// recycler_view.addItemDecoration(new MyDecoration(getActivity(), MyDecoration.HORIZONTAL_LIST));
//设置item间距,5dp
recycler_view.addItemDecoration(new SpaceItemDecoration(5));
swiper_refresh.setColorSchemeResources(R.color.colorPrimaryDark);
swiper_refresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
//模拟刷新数据
freshData();
}
});
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
}
private void initTestData() {
TestBean bean;
for (int i = 0; i < 12; i++) {
bean = new TestBean();
bean.setContent("测试_" + i + "_数据");
testDatas.add(bean);
}
}
private void freshData() {
testDatas.clear();
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1500);
TestBean bean;
for (int i = 0; i < 12; i++) {
bean = new TestBean();
bean.setContent("刷新_" + i + "_数据");
testDatas.add(bean);
}
mHandler.sendEmptyMessage(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
}
@Override
public void onItemClick(int position) {
Toast.makeText(getActivity(), "点击了" + testDatas.get(position).getContent(), Toast.LENGTH_LONG).show();
}
}
布局文件:
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#f5f5f5"
>
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/swiper_refresh"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_margin="10dp"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</android.support.v4.widget.SwipeRefreshLayout>
</android.support.design.widget.CoordinatorLayout>
现在大多数用户都在使用安卓5.0以上版本手机,项目中逐渐加入了material design设计风格。 边学习边整理,写了个简单地DEMO,工作之余还会不断完善更新。