美文网首页
Android 基础学习 day05·Volley+Gson综合

Android 基础学习 day05·Volley+Gson综合

作者: Y__W | 来源:发表于2021-02-26 18:43 被阅读0次

    目录
    一、步骤展示
    (一)准备
    (二)具体实施
    二、效果展示
    三、补充
    1、内容如果有不对的,希望可以指出或补充。
    2、任务练习。

    一、步骤展示
    (一)准备

    1 分析

    总体要求:访问当前时间接口,将信息显示到app页面里面(自行设计)。接口的地址:http://poetry.apiopen.top/poetryFull?count=2&page=1

    JSON数据分析:接口地址对应的数据是有数据头的复杂数组数据。

    JSON数据结构的字段↓


    20210202010543604.png

    JSON数据数组内容的字段↓


    20210202012234659.png

    2 文件

    根据 JSON 建立的Java类 ,这部分是返回对应的所有字段。


    2021020201340674.png

    3 依赖

    项目对应的 build.gradle 文件


    20210201224323412.png

    清单文件


    2021020122444779.png

    (二)具体实施

    1 布局

    activity_main.xml
    <?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="vertical"
        android:padding="10dp"
        android:background="@mipmap/bg">
        <!--按钮部分-->
        <Button
            android:id="@+id/btn"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:onClick="start"
            android:text="开始解析"
            android:textSize="18sp"
            android:backgroundTint="#400000FF"/>
        <!--展示部分-->
        <TextView
            android:id="@+id/tv_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="解析成功:"
            android:textSize="15sp"
            android:visibility="invisible"/>
        <!--ScrollView(滚动条,竖直滚动条)-->
        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent" >
            <TextView
                android:id="@+id/tv_content"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="20sp"
                android:textColor="@color/white"
                android:background="#400000FF"/>
        </ScrollView>
    
    </LinearLayout>
    

    2 Java类

    Result.java
    
    package com.example.task05;
    
    import java.util.List;
    
    public class Result {
        //json结构
        private String code;
        private String message;
        private List<ResultBean> result;
    
        public class ResultBean{
            //json的内容
            private String title;
            private String dynasty;
            private String writer;
            private String content;
            private String type;
            private String remark;
            private String appreciation;
    
            public ResultBean(String title, String dynasty, String writer, String content, String type, String remark, String appreciation) {
                this.title = title;
                this.dynasty = dynasty;
                this.writer = writer;
                this.content = content;
                this.type = type;
                this.remark = remark;
                this.appreciation = appreciation;
            }
    
            public ResultBean(){
    
            }
    
            public String getTitle() {
                return title;
            }
    
            public void setTitle(String title) {
                this.title = title;
            }
    
            public String getDynasty() {
                return dynasty;
            }
    
            public void setDynasty(String dynasty) {
                this.dynasty = dynasty;
            }
    
            public String getWriter() {
                return writer;
            }
    
            public void setWriter(String writer) {
                this.writer = writer;
            }
    
            public String getContent() {
                return content;
            }
    
            public void setContent(String content) {
                this.content = content;
            }
    
            public String getType() {
                return type;
            }
    
            public void setType(String type) {
                this.type = type;
            }
    
            public String getRemark() {
                return remark;
            }
    
            public void setRemark(String remark) {
                this.remark = remark;
            }
    
            public String getAppreciation() {
                return appreciation;
            }
    
            public void setAppreciation(String appreciation) {
                this.appreciation = appreciation;
            }
    
            @Override
            //显示形式
            public String toString() {
                return  " 诗歌名称→" + title +"\n"+
                        " 朝代→" + dynasty +"\n"+
                        " 作者→" + writer +"\n"+
                        " 内容→" + content +"\n"+
                        " 派别→" + type +"\n"+
                        " 注释→" + remark +"\n"+
                        " 解析→" + appreciation +"\n\n";
            }
        }
    
        public String getCode() {
            return code;
        }
    
        public void setCode(String code) {
            this.code = code;
        }
    
        public String getMessage() {
            return message;
        }
    
        public void setMessage(String message) {
            this.message = message;
        }
    
        public List<ResultBean> getResult() {
            return result;
        }
    
        public void setResult(List<ResultBean> result) {
            this.result = result;
        }
    }
    
    

    3 主要实现方法

    MainActivity.java
    
    package com.example.task05;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.TextView;
    import android.widget.Toast;
    
    import com.android.volley.RequestQueue;
    import com.android.volley.Response;
    import com.android.volley.VolleyError;
    import com.android.volley.toolbox.StringRequest;
    import com.android.volley.toolbox.Volley;
    import com.google.gson.Gson;
    
    import java.util.List;
    
    public class MainActivity extends AppCompatActivity {
        private TextView tvTitle,tvContent;
        private String content = null;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            //获取控件
            tvTitle = findViewById(R.id.tv_title);
            tvContent = findViewById(R.id.tv_content);
        }
    
        public void start(View view){
            if (content == null){
                Toast.makeText(this, "解析成功,再点一次进行清空", Toast.LENGTH_SHORT).show();
                tvTitle.setVisibility(View.VISIBLE);//显示可见
    
                getDatas();//调用方法
            }else{
                tvTitle.setVisibility(View.INVISIBLE);//隐藏
                // 清空内容
                tvContent.setText("");
                content = null;
            }
        }
    
        private void getDatas(){
            //获取到RequestQueue对象
            RequestQueue requestQueue = Volley.newRequestQueue(this);
            //json数据地址
            String jsonDataUrl = "http://poetry.apiopen.top/poetryFull?count=2&page=1";
            //数据请求
            StringRequest stringRequest = new StringRequest(jsonDataUrl,
                    new Response.Listener<String>() {
                        @Override
                        public void onResponse(String response) {
                            Log.i("成功提示", "成功获取到json数据");
                            //1获取到json数据
                            content = response;
                            //2解析json数据
                            Gson gson = new Gson();//Gson对象
                            Result result = gson.fromJson(content,Result.class);
                            List<Result.ResultBean> resultList = result.getResult();//对象中拿到集合
                            //3转为字符串
                            String resultData = resultList.toString();
                            //4去掉[]
                            String resultData2 = resultData.substring(0,resultData.length() - 1);//尾部
                            String resultData3 = resultData2.substring(1);//头部
                            //5展示数据
                            tvContent.setText(resultData3);
                        }
                    },new Response.ErrorListener() {
                        @Override
                        public void onErrorResponse(VolleyError e) {
                            Log.i("错误提示", String.valueOf(e));
                        }
                    });
            requestQueue.add(stringRequest);//添加请求
        }
    }
    

    二、效果展示

    运行结果如下。


    20210202014129251.gif

    三、补充

    1、ScrollView(滚动条)
    2、Android:Gson解析 - 从简单数据到复杂数据

    相关文章

      网友评论

          本文标题:Android 基础学习 day05·Volley+Gson综合

          本文链接:https://www.haomeiwen.com/subject/utrvfltx.html