===============布局============
<?xml version="1.0" encoding="utf-8"?> <LinearLayout android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.aaaa.why.recylerview.MainActivity"> <android.support.v4.widget.SwipeRefreshLayout android:id="@+id/srfl" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView android:id="@+id/rcv" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v7.widget.RecyclerView> </android.support.v4.widget.SwipeRefreshLayout> </LinearLayout>
<?xml version="1.0" encoding="utf-8"?> <LinearLayout android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/name" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <ImageView android:id="@+id/img" android:layout_width="150dp" android:layout_height="150dp" />
</LinearLayout>
====================================MainActivity========================
package com.aaaa.why.recylerview; import android.os.Bundle; import android.os.Handler; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.util.Log; import com.google.gson.Gson; import java.io.IOException; import java.util.ArrayList; import java.util.List; import okhttp3.Request; public class MainActivity extends AppCompatActivity implements SwipeRefreshLayout.OnRefreshListener { private SwipeRefreshLayout srfl; private RecyclerView rcv; private Bean bean; public String urlString = "http://api.expoon.com/AppNews/getNewsList/type/1/p/"; ArrayList<Bean.DataBean> biglist=new ArrayList<Bean.DataBean>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); setokhttp(); } private void setokhttp() { OkHttp.getAsync(urlString, new DataCallBack() { @Override public void requestFailure(Request request, IOException e) { } @Override public void requestSuccess(String result) throws Exception { Gson gson = new Gson(); Bean bean = gson.fromJson(result, Bean.class); List<Bean.DataBean> data = bean.getData(); biglist.addAll(data); Log.e("==",bean+""); initview(); } }); } private void initview() { rcv = (RecyclerView)findViewById(R.id.rcv); srfl = (SwipeRefreshLayout) findViewById(R.id.srfl); srfl.setOnRefreshListener(this); rcv.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false)); MyAdapter myAdapter = new MyAdapter(this,biglist); rcv.setAdapter(myAdapter); } //下拉刷新 @Override public void onRefresh() { new Handler().postDelayed(new Runnable() { @Override public void run() { srfl.setRefreshing(false); } },200); } }
====================Adapter==================
package com.aaaa.why.recylerview; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer; import java.util.ArrayList; /** * author:Created by WeiHuanYing on 2018/4/22. */ public class MyAdapter extends RecyclerView.Adapter{ private Context context; ArrayList<Bean.DataBean> biglist; private ImageLoader instance; public MyAdapter(Context context, ArrayList<Bean.DataBean> biglist) { this.context = context; this.biglist = biglist; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View inflate = LayoutInflater.from(context).inflate(R.layout.item, null); return new MyViewHolder(inflate); } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { MyViewHolder holder1 = (MyViewHolder) holder; holder1.name.setText(biglist.get(position).getNews_title()); instance = ImageLoader.getInstance(); DisplayImageOptions build = new DisplayImageOptions.Builder() .displayer(new RoundedBitmapDisplayer(20))//圆角 .cacheInMemory(true)//设置下载的图片是否缓存在内存中 .cacheOnDisk(true) .build(); instance.displayImage(biglist.get(position).getPic_url(),holder1.img,build); } @Override public int getItemCount() { return biglist.size(); } public class MyViewHolder extends RecyclerView.ViewHolder{ TextView name; private final ImageView img; public MyViewHolder(View itemView) { super(itemView); name = itemView.findViewById(R.id.name); img = (ImageView) itemView.findViewById(R.id.img); } } }
=======================OkHttp==============
package com.aaaa.why.recylerview; import android.os.Handler; import android.os.Looper; import java.io.IOException; import okhttp3.Call; import okhttp3.Callback; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; /** * author:Created by WeiHuanYing on 2018/4/22. */ public class OkHttp { public static OkHttp sOkHttpManager; private final OkHttpClient okHttpClient; private Handler mHandler; //构造方法 private OkHttp(){ okHttpClient = new OkHttpClient(); //因为我们请求数据一般都是子线程中请求,在这里我们使用了handler mHandler = new Handler(Looper.getMainLooper()); } //单例模式 public static OkHttp getInstance(){ if(sOkHttpManager==null){ sOkHttpManager = new OkHttp(); } return sOkHttpManager; } public static void getAsync(String url, DataCallBack callBack) { getInstance().inner_getAsync(url, callBack); } private void inner_getAsync(String url, final DataCallBack callBack) { final Request request = new Request.Builder().url(url).build(); okHttpClient.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { deliverDataFailure(request, e, callBack); } @Override public void onResponse(Call call, Response response) throws IOException { String result = null; try { result = response.body().string(); } catch (IOException e) { deliverDataFailure(request, e, callBack); } deliverDataSuccess(result, callBack); } }); } /** * 分发失败的时候调用 * * @param request * @param e * @param callBack */ private void deliverDataFailure(final Request request, final IOException e, final DataCallBack callBack) { /** * 在这里使用异步处理 */ mHandler.post(new Runnable() { @Override public void run() { if (callBack != null) { callBack.requestFailure(request, e); } } }); } /** * 分发成功的时候调用 * * @param result * @param callBack */ private void deliverDataSuccess(final String result, final DataCallBack callBack) { /** * 在这里使用异步线程处理 */ mHandler.post(new Runnable() { @Override public void run() { if (callBack != null) { try { callBack.requestSuccess(result); } catch (Exception e) { e.printStackTrace(); } } } }); } }
=================接口===================
package com.aaaa.why.recylerview; import java.io.IOException; import okhttp3.Request; /** * author:Created by WeiHuanYing on 2018/4/22. */ public interface DataCallBack { void requestFailure(Request request, IOException e); void requestSuccess(String result) throws Exception; }