安卓开发学习——day14

准备工作

添加依赖

build.gradle(project)

allprojects {
    repositories {
    	...
        maven {url 'https://jitpack.io'}
    }
}

build.gradle(Module)

dependencies {
	...
    implementation 'com.github.PhilJay:MPAndroidChart:v3.0.3'
    implementation 'com.google.code.gson:gson:2.8.0'
    implementation 'com.android.volley:volley:1.1.1'
}

获取网络权限

<uses-permission android:name="android.permission.INTERNET"/>

I.页面布局

<?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"
    android:background="#999AAA"
    tools:context=".MainActivity">

    <EditText
        android:id="@+id/edt_input_url"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入接口网址"
        android:background="@drawable/border"
        android:layout_margin="5dp"
        android:lines="2"/>
    <Button
        android:onClick="doParsing"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="解析"
        />
    <com.github.mikephil.charting.charts.LineChart
        android:id="@+id/chart"
        android:layout_width="match_parent"
        android:layout_height="220dp" />
</LinearLayout>

II.Volley & Gson

参考博客

package net.tyao.task6;

import androidx.annotation.NonNull;

public class Result {

    /**
     * API:http://money.finance.sina.com.cn/quotes_service/api/json_v2.php/CN_MarketData.getKLineData?symbol=sz000001&scale=5&ma=5&datalen=1023
     *
     * day : 2021-01-04 10:20:00
     * open : 18.580
     * high : 18.640
     * low : 18.540
     * close : 18.540
     * volume : 4502644
     * ma_price5 : 18.676
     * ma_volume5 : 3617493
     */

    private String day;
    private String open;
    private String high;
    private String low;
    private String close;
    private String volume;
    private double ma_price5;
    private int ma_volume5;

    @NonNull
    @Override
    public String toString() {
        return super.toString();
    }

    public String getDay() {
        return day;
    }

    public void setDay(String day) {
        this.day = day;
    }

    public String getOpen() {
        return open;
    }

    public void setOpen(String open) {
        this.open = open;
    }

    public String getHigh() {
        return high;
    }

    public void setHigh(String high) {
        this.high = high;
    }

    public String getLow() {
        return low;
    }

    public void setLow(String low) {
        this.low = low;
    }

    public String getClose() {
        return close;
    }

    public void setClose(String close) {
        this.close = close;
    }

    public String getVolume() {
        return volume;
    }

    public void setVolume(String volume) {
        this.volume = volume;
    }

    public double getMa_price5() {
        return ma_price5;
    }

    public void setMa_price5(double ma_price5) {
        this.ma_price5 = ma_price5;
    }

    public int getMa_volume5() {
        return ma_volume5;
    }

    public void setMa_volume5(int ma_volume5) {
        this.ma_volume5 = ma_volume5;
    }
}
package net.tyao.task6;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Context;
import android.os.Bundle;
import android.util.JsonReader;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
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.github.mikephil.charting.charts.LineChart;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

import java.io.Reader;
import java.io.StringReader;
import java.lang.reflect.Type;
import java.util.List;

public class MainActivity extends AppCompatActivity {
    /*
    *股市接口:http://money.finance.sina.com.cn/quotes_service/api/json_v2.php/CN_MarketData.getKLineData?symbol=sz000001&scale=5&ma=5&datalen=1023
    *
    *
    * 天气接口:
    * http://wthrcdn.etouch.cn/weather_mini?citykey=101180102
      http://wthrcdn.etouch.cn/weather_mini?citykey=101180101
      http://wthrcdn.etouch.cn/weather_mini?citykey=101180103
    * */
    private EditText editInputUrl;
    private TextView tvShow;
    private RequestQueue mRequestQueue;
    
    private LineChart mChart;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editInputUrl = findViewById(R.id.edt_input_url);
        tvShow = findViewById(R.id.tv_show);
        mChart = findViewById(R.id.chart);

        editInputUrl.setText("http://money.finance.sina.com.cn/quotes_service/api/json_v2.php/CN_MarketData.getKLineData?symbol=sz000001&scale=5&ma=5&datalen=1023");
        
        mRequestQueue = Volley.newRequestQueue(this);
    }

    public void doParsing(View view) {
        String url = editInputUrl.getText().toString();
        if (url.length() == 0) {
            Toast.makeText(MainActivity.this,"输入为空,请重新输入",Toast.LENGTH_SHORT).show();
        }
        final StringRequest stringRequest = new StringRequest(
                url,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        Log.i("成功提示", "成功获取到json数据");
                        String content = new String(response.toString());
                        tvShow.setText(content);
                        //集合类的json
                        Type type = new TypeToken<List<Result>>(){}.getType();
                        List<Result> results = new Gson().fromJson(content,type);

                        tvShow.setText(results.get(0).toString());
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Context context;
                        CharSequence text;
                        Toast.makeText(MainActivity.this, "服务请求失败!", Toast.LENGTH_SHORT).show();
                    }
                }
        );
        mRequestQueue.add(stringRequest);
    }
}

测试:

IV.MPAndroidChart

测试

总结:

D14今天完成了数据的解析,今天的Gson解析是集合的解析,和之前简单的略有不同,股市线型图明天在继续做。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值