没有人会一直顺利,愿你更加强大,然后有一天你可以笑着讲述那些曾让你哭的瞬间。
下拉刷新(SwipeRefreshLayout)
该组件当中只接受 1 个子组件也 就是需要刷新内容的组件,如果有多个子组件时将只展示第一个子组件中所更新的内容,后面的子 组件将不予展示。这个子组件必须是允许滚动的,如 ListView、GridView 或者是 RecyclerView 等。 该组件主要用于在屏幕中手指向下滑动时起到下拉刷新数据的作用。
需要在build.gradle(:app)中的depenadncies下添加依赖:
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0"
简单页面布局:
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/dropRefresh"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@+id/listViews"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
交互编写:
package com.example.permissionapplication;
import androidx.appcompat.app.AppCompatActivity;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import android.os.Bundle;
import android.os.Handler;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class MySwipeRefreshLayout extends AppCompatActivity {
private SwipeRefreshLayout swipeRefreshLayout;
private ListView listView;
private ArrayAdapter<String> adapter;
// 数据源,后期写业务可使用更方便URi或其他代替
private List<String> data=new ArrayList<String>(
Arrays.asList("Android 200例","Java全能速查宝典","Android从入门到精通","Java开发实战宝典")
);
private Handler handler=new Handler();
private Runnable runnable=new Runnable() {
@Override
public void run() {
data.addAll(Arrays.asList("HTML","CSS","JavaScript","Java"));
adapter.notifyDataSetChanged();//更改适配器数据
swipeRefreshLayout.setRefreshing(false);//刷新结束
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_swipe_refresh_layout);
initView();
}
private void initView() {
listView=findViewById(R.id.listViews);
swipeRefreshLayout=findViewById(R.id.dropRefresh);
adapter=new ArrayAdapter<>(this, android.R.layout.simple_list_item_1,data);
listView.setAdapter(adapter);
// 刷新监听
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
// 刷新内容,在3s内完成
handler.postDelayed(runnable,3000);
}
});
// 设置刷新进度条颜色
swipeRefreshLayout.setColorSchemeResources(R.color.purple_500,R.color.purple_200,R.color.purple_700,R.color.teal_700);
}
}
交互效果: