注意:SwipeRefreshLayout中只能有一个控件
建议:与万能适配器配套使用
简介:
使用SwipeRefreshLayout可以实现下拉刷新,前提是布局里需要包裹一个可以滑动的子控件,然后在代码里设置OnRefreshListener设置监听,最后在监听里设置刷新时的数据获取就可以了
常用方法:
isRefreshing()
判断当前的状态是否是刷新状态
。
setColorSchemeResources(int… colorResIds)
设置下拉进度条的颜色主题,参数为可变参数,并且是资源id,可以设置多种不同的颜色,每转一圈就显示一种颜色。
setOnRefreshListener(SwipeRefreshLayout.OnRefreshListener listener)
设置监听,需要重写onRefresh()方法,顶部下拉时会调用这个方法,在里面实现请求数据的逻辑,设置下拉进度条消失等等。
setProgressBackgroundColorSchemeResource(int colorRes)
设置下拉进度条的背景颜色,默认白色。
setRefreshing(boolean refreshing)
设置刷新状态,true表示正在刷新,false表示取消刷新。
布局xml:
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/sw">
<androidx.recyclerview.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/asd"/>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
public class MainActivity extends AppCompatActivity {
private RecyclerView asd;
private SwipeRefreshLayout sw;
Myadapter myadapter;
List<FoodBean.DataBean> list=new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
//数据请求
OkGo.<String>get("http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=20&page=1").execute(new StringCallback() {
@Override
public void onSuccess(Response<String> response) {
Gson gson = new Gson();
FoodBean foodBean = gson.fromJson(response.body(), FoodBean.class);
list.addAll(foodBean.getData());
myadapter.notifyDataSetChanged();
}
});
//排布样式
asd.setLayoutManager(new LinearLayoutManager(this));
//适配器
myadapter=new Myadapter(R.layout.item,list);
asd.setAdapter(myadapter);
//刷新的监听
sw.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
sw.setRefreshing(false);
}
});
}
private void initView() {
asd = (RecyclerView) findViewById(R.id.asd);
sw = (SwipeRefreshLayout) findViewById(R.id.sw);
}
//适配器
class Myadapter extends BaseQuickAdapter<FoodBean.DataBean, BaseViewHolder> {
public Myadapter(int layoutResId, @Nullable List<FoodBean.DataBean> data) {
super(layoutResId, data);
}
@Override
protected void convert(BaseViewHolder helper, FoodBean.DataBean item) {
helper.setText(R.id.textView,item.getTitle());
}
}
}