Android官方提供的下拉刷新控件——SwipeRefreshLayout
1 <?xml version="1.0" encoding="utf-8"?> 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:tools="http://schemas.android.com/tools" 4 android:layout_width="match_parent" 5 android:layout_height="match_parent" 6 tools:context="com.example.administrator.mydemo.PullActivity"> 7 <android.support.v4.widget.SwipeRefreshLayout 8 android:id="@+id/mpull" 9 android:layout_height="match_parent" 10 android:layout_width="match_parent" 11 > 12 <ListView 13 android:id="@+id/mlist" 14 android:layout_width="match_parent" 15 android:layout_height="match_parent"> 16 </ListView> 17 18 </android.support.v4.widget.SwipeRefreshLayout> 19 20 21 </RelativeLayout>
1 import android.os.Handler; 2 import android.os.Message; 3 import android.support.v4.widget.SwipeRefreshLayout; 4 import android.support.v7.app.AppCompatActivity; 5 import android.os.Bundle; 6 import android.widget.ListView; 7 import android.widget.SimpleAdapter; 8 import android.widget.Toast; 9 10 import java.util.ArrayList; 11 import java.util.HashMap; 12 import java.util.List; 13 import java.util.Map; 14 15 public class PullActivity extends AppCompatActivity { 16 private SwipeRefreshLayout swipeRefreshLayout; 17 private ListView listView; 18 private List list; 19 private SimpleAdapter simpleAdapter; 20 21 @Override 22 protected void onCreate(Bundle savedInstanceState) { 23 super.onCreate(savedInstanceState); 24 setContentView(R.layout.activity_pull); 25 initView(); 26 setList(); 27 } 28 29 private void initView(){ 30 swipeRefreshLayout= (SwipeRefreshLayout) findViewById(R.id.mpull); 31 swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { 32 @Override 33 public void onRefresh() { 34 // 35 new Handler().postDelayed(new Thread(new Runnable() { 36 @Override 37 public void run() { 38 swipeRefreshLayout.setRefreshing(false); 39 40 //刷新之后发送message 41 Message msg=new Message(); 42 msg.what=1; 43 mhandle.sendMessage(msg); 44 45 } 46 }),3000); 47 } 48 }); 49 listView= (ListView) findViewById(R.id.mlist); 50 } 51 private Handler mhandle=new Handler(){ 52 @Override 53 public void handleMessage(Message msg) { 54 super.handleMessage(msg); 55 if (msg.what==1){ 56 Toast.makeText(getApplicationContext(),"刷新成功!",Toast.LENGTH_SHORT).show(); 57 //下拉之后需要加载的数据 58 List mlist=new ArrayList(); 59 for (int i=0;i<20;i++){ 60 Map map=new HashMap(); 61 map.put("img",R.drawable.img); 62 map.put("text","下拉数据"+i); 63 mlist.add(map); 64 } 65 list.addAll(mlist); 66 simpleAdapter.notifyDataSetChanged(); 67 } 68 } 69 }; 70 private void setList(){ 71 list=new ArrayList(); 72 for (int i=0;i<20;i++){ 73 Map map=new HashMap(); 74 map.put("img",R.drawable.img); 75 map.put("text","新数据"+i); 76 list.add(map); 77 } 78 simpleAdapter=new SimpleAdapter(this,list,R.layout.list_item,new String[]{"img","text"},new int[]{R.id.my_img,R.id.my_item}); 79 listView.setAdapter(simpleAdapter); 80 } 81 }