今天看了鸿洋老师关于 android 官方 下拉刷新 控件 SwipeRefreshLayout的介绍(原文链接),学习了一下,自己也写篇学习笔记吧,同时更新一下 鸿洋老师博客里 关于SwipeRefreshLayout的 API 介绍。
先上SwipeRefreshLayout API 图:
标出地方表明 在实现依托 SwipeRefreshLayout 的 activity 时,需要实例化 刷新监听接口 OnRefreshListener;
注意标红的地方,那个方法现在已经被舍弃啦,所以看 鸿洋老师博客的同学 需要注意一下哈~~
下面上代码啦,也都是非常基础的 android 代码,一看就明白的~
先是布局文件:
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/swipe_refresh_layout"
android:layout_height="match_parent"
android:layout_width="match_parent"
>
<ListView
android:id="@+id/my_listview"
android:layout_width="match_parent"
android:layout_height="match_parent">
</ListView>
</android.support.v4.widget.SwipeRefreshLayout>
就是 SwipeRefreshLayout 里面 加了个 ListView, 然后动态刷新 ListView;
下面直接上 MainActivity 代码:
public class MainActivity extends AppCompatActivity implements SwipeRefreshLayout.OnRefreshListener {
private SwipeRefreshLayout swipeRefreshLayout;
private ListView listView;
private ArrayAdapter<String> arrayAdapter;
//ListView 数据
private List<String> mDatas = new ArrayList<String>(Arrays.asList("Java" ,
"Javascript" , "C" , "C++" ,
"Ruby" , "Json" , "HTML"));
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView) findViewById(R.id.my_listview);
swipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_refresh_layout);
swipeRefreshLayout.setOnRefreshListener(this);
//设置刷新标致颜色
swipeRefreshLayout.setColorSchemeResources(android.R.color.holo_blue_bright);
arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, mDatas);
listView.setAdapter(arrayAdapter);
}
@Override
public void onRefresh() {
new GetDataTask().execute();
}
//SwipeRefreshLayout刷新时 异步加载数据
private class GetDataTask extends AsyncTask<Void, Void, String>{
@Override
protected String doInBackground(Void... params) {
try{
Thread.sleep(2000);
}catch (InterruptedException e){
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String s) {
mDatas.addAll(Arrays.asList("Lucene" , "Canvas" , "Bitmap"));
arrayAdapter.notifyDataSetChanged();
swipeRefreshLayout.setRefreshing(false);
}
}
}
activity代码里的重点部分就在 对 swipeRefreshLayout 属性的设置 和 对应 监听函数 OnRefreshListener的编写上,不过也都没啥难度,有API文档在(详细文档),我的demo里 刷新事件 还是沿用了 鸿洋老师 的处理,对ListView做动态数据添加,不过没有用 handler的方法,用了 AsyncTask...权当练手。好啦,基本就是这些了,demo就不放了因为以上代码基本能出来这个demo啦;
加油加油~~ 永不止步!~