OKHttp二次封装请求数据加RecycycleView展示

本文介绍了一个使用OkHttp进行网络请求并结合RecyclerView展示数据的安卓应用案例。文章详细展示了如何配置OkHttp依赖、发送GET请求获取数据,以及如何解析响应并在RecyclerView中显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

依赖:
Okhttp依赖:implementation 'com.squareup.okhttp3:okhttp:3.10.0'

RecyclerView依赖:
compile 'com.android.support:recyclerview-v7:26.0.0-alpha1'

activity_main中:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:orientation="vertical"
    tools:context="com.example.com.myapplication.MainActivity">


    <android.support.v7.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/rv"></android.support.v7.widget.RecyclerView>

</LinearLayout>

Activitymain中:

package com.example.com.myapplication;

import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
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.List;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;

public class MainActivity extends AppCompatActivity {
    private String urldata="http://www.93.gov.cn/93app/data.do?channelId=0&startNum=10";
    private RecyclerView rv;
   
   private Reqbean reqbean;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        getinit();
        getdata();


    }

    private void getdata() {

        okhttputil.doGet(urldata, new Callback() {

            @Override
            public void onFailure(Call call, IOException e) {

            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                Gson gson = new Gson();
                String s = response.body().string();
                //Log.i( "---Smes",s);
                reqbean = gson.fromJson(s, Reqbean.class);
                final List<Reqbean.DataBean> data = reqbean.getData();
                Log.i("---Smes",reqbean.getData().toString());
                if (response.isSuccessful()){
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            RecycleViewMyAdapter recycleViewMyAdapter = new RecycleViewMyAdapter(MainActivity.this,data);
                            rv.setAdapter(recycleViewMyAdapter);
                            recycleViewMyAdapter.notifyDataSetChanged();
                        }
                    });
                }
                
            }
        });
    }

    private void getinit() {
        rv = findViewById(R.id.rv);
        //布局管理器
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false);
        rv.setLayoutManager(linearLayoutManager);
    }
}

子布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/tv"
        android:text="sdfdsfds"/>

    <ImageView
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:id="@+id/img"/>
</LinearLayout>

适配器中:

package com.example.com.myapplication;

import android.content.Context;
import android.graphics.Bitmap;
import android.support.v7.widget.RecyclerView;
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.assist.ImageScaleType;
import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;

import java.util.List;

/**
 * Created by 联想 on 2018/5/26.
 */

class RecycleViewMyAdapter extends RecyclerView.Adapter<RecycleViewMyAdapter.ViewHolder> {
   private Context context;
    List<Reqbean.DataBean> data;
private DisplayImageOptions options;
    public RecycleViewMyAdapter(Context context, List<Reqbean.DataBean> data) {
        this.context = context;
        this.data = data;


    /*   options = new DisplayImageOptions.Builder()
                .cacheInMemory(true)//使用内存缓存
                .cacheOnDisk(true)//使用磁盘缓存
                .showImageOnLoading(R.mipmap.ic_launcher)//设置正在下载的图片
                .showImageForEmptyUri(R.mipmap.ic_launcher)//url为空或请求的资源不存在时
                .showImageOnFail(R.mipmap.ic_launcher)//下载失败时显示的图片
                .bitmapConfig(Bitmap.Config.RGB_565)//设置图片色彩模式 1px=2字节
                .imageScaleType(ImageScaleType.EXACTLY)//设置图片的缩放模式
                .displayer(new RoundedBitmapDisplayer(100))//设置圆角 30代表半径 自定义
                .build();*/

    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View itemview = View.inflate(context, R.layout.item, null);
        ViewHolder viewHolder = new ViewHolder(itemview);
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
holder.text.setText(data.get(position).getTITLE());
//ImageLoader.getInstance().displayImage(data.get(position).getIMAGEURL(),holder.image);
    }

    @Override
    public int getItemCount() {
        return data.size();
    }



    class ViewHolder extends RecyclerView.ViewHolder{

        private final ImageView image;
        private final TextView text;

        public ViewHolder(View itemView) {
            super(itemView);
            text = itemView.findViewById(R.id.tv);
            image = itemView.findViewById(R.id.img);
        }
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值