网络请求,JSON解析

MainActivity

package com.baozilichao.test2;

import android.database.Cursor;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.ListView;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;

import bean.MenuBean;
import dao.StudentDao;
import httpurl.HTTPtest1;

public class MainActivity extends AppCompatActivity {
    StudentOpenHelp helper;
    StudentDao studentDao;
    ListView lv;

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

    private void initView() {
        helper = new StudentOpenHelp(this, "student.db", null, 1);
        studentDao = new StudentDao(this);
    }

    private void setDate() {
        studentDao.insert("16050103", "名字3", "年龄3", "爱好3");

        Cursor cursor = studentDao.query("16050101");
        while (cursor.moveToNext()) {
            Log.i("query", cursor.getString(1));
            Log.i("query", cursor.getString(2));
            Log.i("query", cursor.getString(3));
            Log.i("query", cursor.getString(4));
        }
        Cursor cursor1 = studentDao.queryAll();
        while (cursor1.moveToNext()) {
            Log.i("queryAll", cursor1.getString(1));
            Log.i("queryAll", cursor1.getString(3));
            Log.i("queryAll", cursor1.getString(2));
            Log.i("queryAll", cursor1.getString(4));
        }
        new MyAsyncTask().execute();

    }

    class MyAsyncTask extends AsyncTask<String, String, String> {

        @Override
        protected String doInBackground(String... strings) {
            String result = HTTPtest1.GetURL("http://mobile.ximalaya.com/mobile/discovery/v1/tabs?device=android");
            Log.i("MyAsyncTask", "doInBackground: " + result);
            MenuBean bean=parseHson(result);
            Log.i("MenuBean", " " + bean.msg);
            Log.i("MenuBean", " " + bean.tabs.list.get(0).title);
            return null;
        }
    }

    //    解析json数据
    private MenuBean parseHson(String json) {
//        第一步 把json字符串转换成jsonobject对象
        try {
            JSONObject object = new JSONObject(json);
//         第二步  需要一个javabean对象
            MenuBean bean = new MenuBean();
            bean.ret = object.getInt("ret");
            bean.msg = object.getString("msg");
//            第三步 把tabs对应的字符串转换成jsonobject
            JSONObject objectTab = object.getJSONObject("tabs");
//            第三步 因为tab是一个类型,需要把对象创建出来,
            bean.tabs= bean.new Tab();
            bean.tabs.count  = objectTab.getInt("count");
//            第五步 因为list是一个jsonArray,需要先转换成jsonArray对象
            JSONArray array = objectTab.getJSONArray("list");
            bean.tabs.list = new ArrayList<MenuBean.Title>();
            for (int i = 0; i < array.length(); i++) {
                JSONObject objectTitle = array.getJSONObject(i);
//                第六步 对应objTitle实例化bean中的Title对象
                MenuBean.Title title = bean.new Title();
                title.title = objectTitle.getString("title");
                title.contentType = objectTitle.getString("contentType");
                bean.tabs.list.add(title);
            }
            return bean;

        } catch (JSONException e) {
            e.printStackTrace();
        }

        return null;
    }

}

StudentOpenHelp,

package com.baozilichao.test2;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

/**
 * Created by user on 2016/8/13.
 */
public class StudentOpenHelp extends SQLiteOpenHelper {
    public StudentOpenHelp(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }
    //第一次创建数据库的时候
    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
        String sql="create table student(id integer primary key autoincrement," +
                "num integer(8)," +
                "name varchar(10)," +
                "age integer(2)," +
                "hobby varchar(50));";
        sqLiteDatabase.execSQL(sql);

    }
    //版本号增加的时候,版本号只能增加不能减小
    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

    }
}

HTTPtest1

package httpurl;

import android.util.Log;
import android.widget.ListView;
import android.widget.TextView;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

/**
 * Created by user on 2016/8/13.
 */
public class HTTPtest1 {

    public static String GetURL(String path) {

        HttpURLConnection connection = null;
        InputStream inputstream = null;
        ByteArrayOutputStream outputStream = null;

        try {
            URL url = new URL(path);
            connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("GET");
            connection.setConnectTimeout(8000);
            connection.setReadTimeout(8 * 1000);

            if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {

                inputstream = connection.getInputStream();
                outputStream = new ByteArrayOutputStream();
                byte[] by = new byte[1024];
                int len = 0;
                while ((len = inputstream.read(by)) != -1) {
                    outputStream.write(by, 0, len);
                }
                byte[] by1 = outputStream.toByteArray();

                String result = new String(by1);

                return result;
            }

        } catch (Exception e) {
            e.printStackTrace();
            Log.e("TAG", "22222");
        } finally {
            try {
                if (connection != null) {
                    connection.disconnect();
                }
                if (outputStream != null) {
                    outputStream.close();
                }
                if (inputstream != null) {
                    inputstream.close();
                }

            } catch (IOException e) {
                e.printStackTrace();
            }
            Log.e("TAG", "333333");
        }
        Log.e("TAG", "444444");
        return null;
    }

}



StudentDao

package dao;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;

import com.baozilichao.test2.StudentOpenHelp;

/**
 * Created by user on 2016/8/13.
 */
public class StudentDao  {
    Context context;
    StudentOpenHelp helper;
    public StudentDao(Context context) {
        this.context = context;
        helper = new StudentOpenHelp(context, "student.db", null, 1);
    }

    //    往student表中插入数据的方法
    public void insert(String num, String name, String age, String hobby) {
        SQLiteDatabase db = helper.getWritableDatabase();
        String sql = "insert into student(num,name,age,hobby) values (?,?,?,?)";
        db.execSQL(sql, new String[]{num, name, age, hobby});

        ContentValues values=new ContentValues();
//        put方法传递的key值必须和数据库中的字段一样
        values.put("num",num);
        values.put("name",name);
        values.put("age",age);
        values.put("hobby",hobby);
        db.insert("student",null,values);

        db.close();
    }//

    //查询数据库
    public Cursor query(String num) {
        SQLiteDatabase db = helper.getReadableDatabase();
        String sql = "select*from student where  num=?";
        return db.rawQuery(sql, new String[]{num});
//        使用读数据库权限的时候,不能调用db.close()方法
    }

    //查询全部
    public Cursor queryAll() {
        SQLiteDatabase db = helper.getReadableDatabase();
        String sql = "select*from student";
        return db.rawQuery(sql, null);

    }
}

MenuBean`

package bean;

import java.util.List;

/**
 * Created by user on 2016/8/13.
 */
public class MenuBean {
    public int ret;
    public String msg;
    public Tab tabs;

    //    因为tab是一个JsonObject,每个jsonObject需要对应一个类型
    public class Tab {
        public int count;
        //    在json数据中,如果有jsonArray,就用list集合的形式存数据
        public List<Title> list;
    }

    public class Title {
        public String title;
        public String contentType;

    }

}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.baozilichao.test2.MainActivity">

    <ListView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/main_listview"/>
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.baozilichao.test2">
<uses-permission android:name="android.permission.INTERNET"/>
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值