Android原生下拉刷新SwipeRefreshLayout实践

本篇文章翻译自Ravi Tamada的Android Swipe Down to Refresh ListView Tutorial

首先来看一下效果图

你应该发现许多的android app例如Twitter,Google+都提供了一个下拉刷新数据的功能,只要用户从上往下滑动,新的内容就会加载出来,这篇文章我们将学习如何开发出同样的功能。

1.Android SwipeRefreshLayout

实现SwipeRefreshLayout非常容易,我们将SwipeRefreshLayout作为根布局,将一个子布局包裹在内,本例中我们使用ListView,并且在Activity中中实现SwipeRefreshLayout.OnRefreshListener接口,当用户下拉时,会触发onRefresh()方法,在onRefresh()中我们发起网络请求并且获取最新的数据。

==>2.JSON URL

URL:?offset=0

3.新建一个工程

1.打开Android Studio,选择File->New Project 工程起名为MySwipeRefreshLayout

2.右键MySwipeRefreshLayout,选择New->Module 添加我们的Volley库,起名为Volley

将Volley.jar复制到Volley的libs文件夹下

打开Volley下的build.gradle,,添加如下代码

dependencies {compile fileTree(dir: ‘libs’, include: [‘*.jar’])compile ‘com.android.support:appcompat-v7:22.2.0’compile files(‘libs/volley.jar’)}

3.打开src/res/values/colors.xml,添加如下代码

=>#57dd86>#ff484d>#24c6d5>

4.新建一个Application来初始化我们的Volley

{String TAG = MyApplication.class.getSimpleName();private RequestQueue mRequestQueue;private static MyApplication mInstance;() {super.onCreate();mInstance = this;}MyApplication getInstance() {return mInstance;}public RequestQueue getRequestQueue() {if (mRequestQueue == null) {mRequestQueue = Volley.newRequestQueue(getApplicationContext());}return mRequestQueue;}public <T> void addToRequestQueue(Request<T> req, String tag) {req.setTag(TextUtils.isEmpty(tag) ? TAG : tag);getRequestQueue().add(req);}public <T> void addToRequestQueue(Request<T> req) {req.setTag(TAG);getRequestQueue().add(req);}(Object tag) {if (mRequestQueue != null) {mRequestQueue.cancelAll(tag);}}}

5.打开AndroidManifest.xml添加网络权限

==”android.permission.INTERNET”/><application==”@style/AppTheme”><activity>=></application></manifest>

6.创建list_row.xml 作为ListView每个item的布局

==”match_parent”android:layout_height=”wrap_content”><TextView===”20dp”android:textStyle=”bold” /><TextView===>

7.创建实体类Movie.java

public class Movie {public int id;public String title;public Movie() {}public Movie(int id, String title) {this.title = title;this.id = id;}}

8.创建Adapter

{private Activity activity;private LayoutInflater inflater;private List<Movie> movieList;private String[] bgColors;public SwipeListAdapter(Activity activity, List<Movie> movieList) {this.activity = activity;this.movieList = movieList;bgColors = activity.getApplicationContext().getResources().getStringArray(R.array.movie_serial_bg);}() {return movieList.size();}@Overridepublic Object getItem(int location) {return movieList.get(location);}(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {if (inflater == null)inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);if (convertView == null)convertView = inflater.inflate(R.layout.list_row, null);TextView serial = (TextView) convertView.findViewById(R.id.serial);TextView title = (TextView) convertView.findViewById(R.id.title);serial.setText(String.valueOf(movieList.get(position).id));title.setText(movieList.get(position).title);String color = bgColors[position % bgColors.length];serial.setBackgroundColor(Color.parseColor(color));return convertView;}}也有伤心的,既有令人兴奋的,也有令人灰心的,

Android原生下拉刷新SwipeRefreshLayout实践

相关文章:

你感兴趣的文章:

标签云: