本篇博客介绍的是利用Google自己的下拉刷新组件SwipeRefreshLayout来实现下拉刷新功能。
效果图如下:
其中相关的适配器,item的布局文件等就不写了,很简单。
1、activity_main.xml的代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android">
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/Main_srLayoutNewsList"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.RecyclerView
android:id="@+id/Main_rViewNewsList"
android:layout_width="match_parent"
android:layout_height="wrap_content"></android.support.v7.widget.RecyclerView>
</android.support.v4.widget.SwipeRefreshLayout>
</LinearLayout>
2、MainActivity.java的代码如下:
package com.deepreality.swiperefreshlayoutdemo;
import android.content.Context;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private Context mContext;
private RecyclerView rViewNewsList;
private SwipeRefreshLayout srLayoutNewsList;
private List<Tb_News> tbNewsList;
private Tb_News tb_news;
private NewsListAdapter newsListAdapter;
private String[] arrayNews = new String[] {"人民日报", "中华日报", "河南日报", "北京日报", "天津日报", "上海日报", "河南日报", "北京日报", "天津日报", "上海日报"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
baseDataInit();
bindViews();
viewsAddListener();
viewsDataInit();
}
private void baseDataInit() {
mContext = this;
tbNewsList = new ArrayList<>();
}
private void bindViews() {
rViewNewsList = findViewById(R.id.Main_rViewNewsList);
srLayoutNewsList = findViewById(R.id.Main_srLayoutNewsList);
//设置RecyclerView的排列方式
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(mContext);
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
rViewNewsList.setLayoutManager(linearLayoutManager);
//设置刷新动画的颜色
srLayoutNewsList.setColorSchemeColors(getResources().getColor(R.color.colorPrimaryDark));
}
private void viewsAddListener() {
//给SwipeRefreshLayout组件添加下拉刷新监听事件
srLayoutNewsList.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
runOnUiThread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < arrayNews.length; i++) {
tb_news = new Tb_News("imageUrl", arrayNews[i]);
tbNewsList.add(tb_news);
}
//刷新列表
newsListAdapter.notifyDataSetChanged();
//刷新结束,隐藏刷新动画
srLayoutNewsList.setRefreshing(false);
}
});
}
});
}
private void viewsDataInit() {
newsListSetAdapter();
}
private void newsListSetAdapter() {
for (int i = 0; i < arrayNews.length; i++) {
tb_news = new Tb_News("imageUrl", arrayNews[i]);
tbNewsList.add(tb_news);
}
newsListAdapter = new NewsListAdapter(mContext, tbNewsList);
rViewNewsList.setAdapter(newsListAdapter);
}
}