Android SwipeRefreshLayout下拉刷新
最近发现app软件中用这个的特别多,那我就向大家分享分享我的理解吧。
这个刷新功能是系统自带的,用起来非常的便捷,而且刷新的时候看起来也简单大方。
先介绍一下xml布局,布局注意的事,标签一定要写全,不能只写一个SwipeRefreshLayout,该控件只能做为父控件,而且里面只能有一个子控件,并且这个子控件是能够滑动的,如 LIstView,ScrollView......
<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:orientation="vertical" android:id="@+id/swipe" android:layout_width="match_parent" android:layout_height="match_parent"> <ListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/listview" android:footerDividersEnabled="false" android:headerDividersEnabled="false" android:background="@android:color/darker_gray" /> </android.support.v4.widget.SwipeRefreshLayout>
下面是刷新实现代码:(代码里面有注释)
import android.os.Bundle; import android.os.Handler; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.app.AppCompatActivity; import android.widget.ArrayAdapter; import android.widget.ListView; import java.util.ArrayList; import java.util.List; import java.util.Random; public class MainActivity extends AppCompatActivity { SwipeRefreshLayout swipeRefreshLayout; ListView listView; List<String> datas; ArrayAdapter<String> adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); datas = new ArrayList<>(); for (int i=0;i<10;i++){ datas.add("item "+i); } //设置listview adapter = new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_list_item_1,datas); //刷新适配器 adapter.notifyDataSetChanged(); listView.setAdapter(adapter); swipeRefreshLayout.setColorSchemeResources(android.R.color.black,android.R.color.holo_orange_dark,android.R.color.holo_red_dark,android.R.color.holo_green_dark); //必须实现这个接口才能进行刷新数据 swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { new Handler().postDelayed(new Runnable() { @Override public void run() { datas.add(0,"item new" + new Random(10)); adapter.notifyDataSetChanged(); swipeRefreshLayout.setRefreshing(false); } }, 4000); } }); } private void initView() { listView= (ListView) findViewById(R.id.listview); swipeRefreshLayout= (SwipeRefreshLayout) findViewById(R.id.swipe); } }就这些吧,,,,,,