准备工作
添加依赖
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);
}
}
测试:
![](https://img-blog.csdnimg.cn/2021020321592117.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjE2Mg==,size_16,color_FFFFFF,t_70)
IV.MPAndroidChart
测试
总结:
D14今天完成了数据的解析,今天的Gson解析是集合的解析,和之前简单的略有不同,股市线型图明天在继续做。