android之网络请求 -- 获取RecyclerView的列表项(图片 + 文字)

本文详细介绍了在Android Studio中实现网络请求获取RecyclerView列表的过程,包括网络请求地址、依赖Glide库、RecyclerTask异步任务、NetworkAdapter适配器、网络Json解析以及网络安全配置。代码中包含关键类的注释,最后展示了运行效果。
摘要由CSDN通过智能技术生成

示意图,网络请求的地址,插件及依赖

示意图:
在这里插入图片描述

网络请求的地址:

http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=20&page=1

插件:GsonFormat,用来解析Gson,在设置中的Plugins下载

依赖:在解析图片地址时,我用的是Glide,要添加它的依赖。

implementation ‘com.github.bumptech.glide:glide:4.3.1’
annotationProcessor ‘com.github.bumptech.glide:compiler:4.3.1’

代码架构

  1. 主界面:MainActivity.java , activity_main.xml
  2. RecyclerTask.java ,这个异步任务得到从网络上请求到的Json字符串。
  3. NetworkAdapter.java , 这个适配器用来展示ui界面。
  4. networkitem.xml, 适配器中每一项的布局情况。
  5. NetworkJson.java, 这个就是网络上获得的Json的Bean类。就是用GsonFormat来解析从网络上得到的JSON字符串,它可以用插件自动生成。
  6. 顺便说一下ActivityManifest中,首先添加一个权限,
<uses-permission android:name="android.permission.INTERNET" />

还要在Application下写一句话:android:networkSecurityConfig="@xml/network_security_config"
这是关于网络安全的,必须写!!!所以还需要写network_security_config.xml
在这里插入图片描述

代码内容

一些比较细节的地方或需要注意的地方我都写了注释

MainActivity.java

package com.example.myapplication;
import android.graphics.Rect;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.DefaultItemAnimator;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.example.myapplication.Adapter.NetworkAdapter;
import com.example.myapplication.Bean.NetworkJson;
import com.example.myapplication.Task.RecyclerTask;
import java.util.List;

public class MainActivity extends AppCompatActivity implements RecyclerTask.NetBeanListener {
   
    private RecyclerView recycler;
    private Handler mHandler;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
   
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        recycler = findViewById(R.id.recycler);
        //findViewById(R.id.button).setOnClickListener(this);
        RecyclerTask task = new RecyclerTask();
        task.setNetBeanListener(this);
        //开始线程
        task.execute();
        mHandler = new Handler();
        //如果不用Handler,直接获取的话, 你就没有给asyncTask一些时间来得到List<NetworkJson.DataBean>这个数组
        //那么你传给适配器的数组就会为空,就会报错
        mHandler.postDelayed(run, 2000);
    }
    private List<NetworkJson.DataBean> mDataBeanList;
    @Override
    public void getNetBean(List<NetworkJson.DataBean> bean) {
   
        mDataBeanList = bean;
        Log.d("bean", "bean -- >" + mDataBeanList.get(0).getId());
    }

   public Runnable run = new Runnable() {
   
        @Override
        public void run() {
   
            LinearLayoutManager llm = new LinearLayoutManager(MainActivity.this, RecyclerView.VERTICAL, false);
            recycler.setLayoutManager(llm);
            recycler.setItemAnimator(new DefaultItemAnimator());
            recycler.addItemDecoration(new RecyclerView.ItemDecoration() {
   
                @Override
                public void getItemOffsets(@NonNull Rect outRect, int itemPosition, @NonNull RecyclerView parent) {
   
                    super.getItemOffsets(outRect, itemPosition, parent);
                    outRect.bottom = 5;
                    outRect.left = 5;
                    outRect.right = 5;
                    outRect.top = 5;
                }
            });
            NetworkAda
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值