第一步添加依赖
compile 'com.squareup.okhttp3:okhttp:3.9.0'
compile 'com.jcodecraeer:xrecyclerview:1.3.2'
第二步布局
<com.jcodecraeer.xrecyclerview.XRecyclerView
android:id="@+id/rv" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="10dp" /> 条目布局<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:orientation="horizontal" android:layout_height="100dp" > <ImageView android:layout_width="100dp" android:layout_height="100dp" android:id="@+id/rv_item_img" /> <TextView android:layout_width="match_parent" android:layout_height="100dp" android:id="@+id/rv_item_txt1" android:gravity="center" android:textSize="20sp" android:textColor="#f00" /> </LinearLayout> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/rv_item_txt" /> </LinearLayout>第三步添加代码
public interface NetDataCallBack<T> { void success(T t); void faild(int positon, String str); }public class OkHttpUtils { private NetDataCallBack netDataCallback; private Handler mhand=new Handler(); public <T> void getdata(String url, final NetDataCallBack netDataCallback, final Class<T> tclass) { //初始化一个 OkHttpClient 并且设置连接和读取超时时间 OkHttpClient okhttp = new OkHttpClient.Builder() .connectTimeout(10, TimeUnit.SECONDS) .readTimeout(20, TimeUnit.SECONDS) .build(); //构造一个Request对象 Request request = new Request.Builder().url(url).build(); //通过request的对象去构造得到一个Call对象 Call call = okhttp.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { netDataCallback.faild(499,e.getMessage()); } @Override public void onResponse(Call call, Response response) throws IOException { String string = response.body().string(); Gson gson=new Gson(); T t = gson.fromJson(string, tclass); final Message msg = Message.obtain(); msg.what=ok; msg.obj=t; mhand.post(new Runnable() { @Override public void run() { netDataCallback.success(msg.obj); } }); } }); } //post请求 public <T>void getLoadDataPost(String url, final NetDataCallBack netDataCallback, final Class<T> tClass, RequestBody body){ this.netDataCallback = netDataCallback; OkHttpClient okHttpClient = new OkHttpClient.Builder() .readTimeout(20, TimeUnit.SECONDS) .connectTimeout(10, TimeUnit.SECONDS) .build(); final Request request = new Request.Builder().url(url).post(body).build(); Call call = okHttpClient.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { netDataCallback.faild(499,e.getMessage()); } @Override public void onResponse(Call call, Response response) throws IOException { T t = new Gson().fromJson(response.body().string(), tClass); final Message msg = Message.obtain(); msg.what = OK; msg.obj = t; mhand.post(new Runnable() { @Override public void run() { netDataCallback.success(msg.obj); } }); } }); } }适配器public class MyRvAdapter extends RecyclerView.Adapter<MyRvAdapter.Viewholder>{ private Context context; private List<ProductBean.DatasBean.GoodsListBean> list = new ArrayList<>(); public MyRvAdapter(Context context, List<ProductBean.DatasBean.GoodsListBean> list) { this.context = context; this.list = list; } @Override public Viewholder onCreateViewHolder(ViewGroup parent, int viewType) { View view= LayoutInflater.from(context).inflate(R.layout.rv_item,parent,false); return new Viewholder(view); } @Override public void onBindViewHolder(Viewholder holder, int position) { // String pic=list.get(position).getGoods_image_url(); // String[] split=pic.split("\\|"); Glide.with(context).load(list.get(position).getGoods_image_url()).error(R.mipmap.ic_launcher).into(holder.img); holder.tv1.setText(list.get(position).getGoods_name()+""); holder.tv2.setText(list.get(position).getGoods_price()+""); holder.itemView.setTag(position); holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (setitemClick!=null){ setitemClick.setitemClick(view, (Integer) view.getTag()); } } }); } @Override public int getItemCount() { return list == null ? 0:list.size(); } class Viewholder extends RecyclerView.ViewHolder{ ImageView img; TextView tv1; TextView tv2; public Viewholder(View itemView) { super(itemView); img = (ImageView)itemView.findViewById(R.id.rv_item_img); tv1 = (TextView)itemView.findViewById(R.id.rv_item_txt); tv2= (TextView) itemView.findViewById(R.id.rv_item_txt1); } } public interface SetitemClick{ View setitemClick(View view,int position); } SetitemClick setitemClick; public void setSetitemClick(SetitemClick setitemClick){ this.setitemClick=setitemClick; } }fragment
public class FragmentOne extends Fragment implements XRecyclerView.LoadingListener{ private String t_path="http://169.254.194.252/mobile/index.php?act=goods&op=goods_list&page=100"; private List<ProductBean.DatasBean.GoodsListBean> list=new ArrayList<>(); private View view; private MyRvAdapter adapter; private XRecyclerView rv; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { view = inflater.inflate(R.layout.fragmentone,container,false); initview(); sp(); adapter.setSetitemClick(new MyRvAdapter.SetitemClick() { @Override public View setitemClick(View view, int position) { Intent intent = new Intent(getActivity(), SpxqActivity.class); startActivity(intent); return null; } }); return view; }@Override public void onRefresh() { list.clear(); sp(); rv.refreshComplete(); } @Override public void onLoadMore() { sp(); rv.loadMoreComplete(); } private void initview(){ rv =(XRecyclerView) view.findViewById(R.id.rv); adapter=new MyRvAdapter(getActivity(),list); rv.setAdapter(adapter); StaggeredGridLayoutManager manager = new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL); rv.setLayoutManager(manager); rv.setLoadingListener(this); } private void sp(){ OkHttpClient okHttpClient = new OkHttpClient(); Request request=new Request.Builder().url(t_path).build(); Call call=okHttpClient.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { if (response.body()!=null&&response.isSuccessful()){ String s=response.body().string(); Gson gson = new Gson(); ProductBean productBean = gson.fromJson(s, ProductBean.class); list.addAll(productBean.getDatas().getGoods_list()); } } }); } }
本文档将指导您如何在Android项目中整合RecycleView与OkHttp。首先,我们需要在项目中添加相应的依赖。接着,我们将介绍如何配置和使用这两个库来实现数据加载和显示。
1936

被折叠的 条评论
为什么被折叠?



