解析Android应用程序中的JSON对象

用户5306293

我正在构建一个带有列表视图的 android 应用程序,当单击一个项目时,它会打开另一个列表视图。我已经通过存储在应用程序资源的 strings.xml 文件中的几个字符串数组完成了这项工作。

但是现在我想通过我创建的 API 获取数据项,并给出 JSON 对象。我不确定如何获取 JSON 对象并将课程名称作为列表视图中的列表项查看。

当单击“化学”(在 MainActivity 中)和“ http://alvideobackend.azurewebsites.net/lesson/Physics时,我想从 SecondActivity 中的“ http://alvideobackend.azurewebsites.net/lesson/Chemistry获取课程名称单击“Physics”(在 MainActivity 中)时在 SecondActivity 中

以下是我尝试过的 MainActivity.java 和 SecondActivity.java

主活动.java

package com.example.acer.videoapp;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.support.v7.widget.Toolbar;

public class MainActivity extends AppCompatActivity {

    Toolbar toolbar;
    ListView listView;

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



        toolbar = (Toolbar) findViewById(R.id.toolbar);
        toolbar.setTitle(getResources().getString(R.string.app_name));
        listView = (ListView) findViewById(R.id.listView);


        ArrayAdapter<String> mAdapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_expandable_list_item_1,getResources().getStringArray(R.array.subjects));

        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int i, long id) {
                Intent intent = new Intent(MainActivity.this,SecondActivity.class);
                intent.putExtra("Subject",listView.getItemAtPosition(i).toString());
                startActivity(intent);
            }
        });
        listView.setAdapter(mAdapter);
    }


}

第二个Activity.java

package com.example.acer.videoapp;

import android.content.Intent;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

public class SecondActivity extends AppCompatActivity {
    Toolbar toolbar1;
    ListView listView1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);

        toolbar1 = (Toolbar) findViewById(R.id.toolbar1);
        listView1 = (ListView) findViewById(R.id.listView1);

        Bundle bundle = getIntent().getExtras();
        if(bundle!=null){
            toolbar1.setTitle(bundle.getString("Subject"));

            if(toolbar1.getTitle().toString().equalsIgnoreCase("Chemistry")){

               //new JSONTask().execute("http://alvideobackend.azurewebsites.net/lesson/Chemistry");

               ArrayAdapter<String> mAdapter = new ArrayAdapter<String>(SecondActivity.this,android.R.layout.simple_expandable_list_item_1,getResources().getStringArray(R.array.Chemistry));

                listView1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> parent, View view, int i, long id) {
                        Intent intent1 = new Intent(SecondActivity.this, ThirdActivity.class);
                        intent1.putExtra("Lesson", listView1.getItemAtPosition(i).toString());
                        startActivity(intent1);
                    }
                });
               listView1.setAdapter(mAdapter);

            }
            else if(toolbar1.getTitle().toString().equalsIgnoreCase("Physics")){
                ArrayAdapter<String> mAdapter = new ArrayAdapter<String>(SecondActivity.this,android.R.layout.simple_expandable_list_item_1,getResources().getStringArray(R.array.Physics));

                listView1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> parent, View view, int i, long id) {
                        Intent intent1 = new Intent(SecondActivity.this, ThirdActivity.class);
                        intent1.putExtra("Lesson", listView1.getItemAtPosition(i).toString());
                        startActivity(intent1);
                    }
                });
                listView1.setAdapter(mAdapter);

            }
        }


    }

    public class JSONTask extends AsyncTask<String,String,String> {

        @Override
        protected String doInBackground(String... params) {
            HttpURLConnection connection = null;
            BufferedReader reader = null;

            try {
                URL url = new URL(params[0]);
                connection = (HttpURLConnection) url.openConnection();
                connection.connect();

                InputStream stream = connection.getInputStream();
                reader = new BufferedReader(new InputStreamReader(stream));

                StringBuffer buffer = new StringBuffer();
                String line = "";
                while ((line = reader.readLine()) != null) {
                    buffer.append(line);
                }

                String finalJson = buffer.toString();
                JSONObject ParentObject = new JSONObject(finalJson);
                JSONArray ParentArray = ParentObject.getJSONArray("");


                for(int i=0; i<ParentArray.length();i++) {

                    JSONObject finalObject = ParentArray.getJSONObject(i);


                    String subject = finalObject.getString("subject");
                    Integer lessonNo = finalObject.getInt("lessonNo");
                    String lessonName = finalObject.getString("lessonName");


                }
                //return lessonName;

            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (JSONException e) {
                e.printStackTrace();
            } finally {
                if (connection != null) {
                    connection.disconnect();
                }
                try {
                    if (reader != null) {
                        reader.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return null;
        }


        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
        }
    }

}

字符串.xml

<resources>
<string name="app_name">VideoApp</string>
<string name="action_settings">Settings</string>
<string name="title_activity_second">SecondActivity</string>
<string name="title_activity_third">ThirdActivity</string>

<string-array name="subjects">
    <item>Chemistry</item>
    <item>Physics</item>
</string-array>

<string-array name="Physics">
    <item>1. Measurement</item>
    <item>2. Mechanics</item>
    <item>3. Oscillations and Waves</item>
    <item>4. Thermal Physics</item>
    <item>5. Gravitational Field</item>
    <item>6. Electrostatic Field</item>
    <item>7. Magnetic Field</item>
    <item>8. Current Electricity</item>
    <item>9. Electronics</item>
    <item>10. Mechanical Properties of Matter</item>
    <item>11. Matter and Radiation</item>
</string-array>

<string-array name="Chemistry">
    <item>1. Atomic structure</item>
    <item>2. Structure and bonding</item>
    <item>3. Chemical calculations</item>
    <item>4. Gaseous state of matter</item>
    <item>5. Energetics</item>
    <item>6. Chemistry of s,p and d block elements</item>
    <item>7. Basic concepts of organic chemistry</item>
    <item>8. Hydrocarbons and halohydrocarbons</item>
    <item>9. Oxygen containing organic compounds</item>
    <item>10. Chemical kinetics</item>
    <item>11. Equilibrium</item>
    <item>12. Electro chemistry</item>
    <item>13. Industrial chemistry and Environmental pollution</item>
</string-array>

</resources>
戈多伊

根据您的网址“ http://alvideobackend.azurewebsites.net/lesson/Chemistry ”中的内容,您应该创建一个带有 4 个参数(_id、subject、lessonNo、lessonName)的 Lesson 类。然后你可以调用你的 API 并使用 Gson 解析结果,如下所示:

ArrayList<Lesson> lessonList = new ArrayList<>();
Gson gson = new Gson();
Type type = new TypeToken<ArrayList<Lesson>>(){}.getType();
lessonList = gson.fromJson(json, type);

然后,您可以创建一个自定义适配器,该适配器采用完整的课程数组列表或从您的课程数组列表中创建一个字符串数组列表,并使用您在示例中所做的通用 ArrayAdapter。

我希望这有帮助!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Android应用程序中JSON对象绑定的替代方法

来自分类Dev

Json在Express应用程序中解析

来自分类Dev

如何在Android应用程序中解析以下JSON响应

来自分类Dev

JSON将数据解析为android应用程序

来自分类Dev

Android-Json解析-应用程序崩溃

来自分类Dev

Android应用程序在解析JSON中被关闭

来自分类Dev

从应用程序读取php文件中的json对象

来自分类Dev

如何从模块更改应用程序中 JSON 对象的值?

来自分类Dev

Android应用程序的JSOUP解析问题

来自分类Dev

如何获取任何网站的JSON数据以在我的Android本机应用程序中解析和使用

来自分类Dev

从android应用程序中的php文件读取JSON数据

来自分类Dev

在Angular2应用程序中渲染JSON对象将导致“对象对象”

来自分类Dev

iOS应用程序中的搜索栏以搜索PHP / MYSQLi并将JSON解析回iOS应用程序?

来自分类Dev

将dplyr中的get(paste0())对象解析为Shiny应用程序

来自分类Dev

如何通过url发送对象列表并在spring应用程序中解析

来自分类Dev

将json对象与内部对象一起使用到android应用程序

来自分类Dev

在Flask中重用应用程序对象

来自分类Dev

Android应用程序在简单应用程序中崩溃

来自分类Dev

更新 json 以显示 json 数组中的对象计数,而不是 Node 应用程序中的列表

来自分类Dev

需要帮助我的 android 应用程序开发项目的 JSON 解析

来自分类Dev

在Android应用程序中使用Json

来自分类Dev

我需要在Windows Phone应用程序C#中解析json结果

来自分类Dev

在 swift 4 for Mac OS 应用程序中解析 json 时出现错误“数据损坏”

来自分类Dev

如何从我的Android应用程序将JSON对象发送到服务器

来自分类Dev

如何从Android应用程序将此类对象发布到Json?

来自分类Dev

如何使用 Android 应用程序反序列化 Json 对象

来自分类常见问题

如何在vue.js应用程序中访问外部json文件对象

来自分类Dev

从MVC应用程序中预编译的类序列化JSON对象

来自分类Dev

从MVC应用程序中预编译的类序列化JSON对象

Related 相关文章

  1. 1

    Android应用程序中JSON对象绑定的替代方法

  2. 2

    Json在Express应用程序中解析

  3. 3

    如何在Android应用程序中解析以下JSON响应

  4. 4

    JSON将数据解析为android应用程序

  5. 5

    Android-Json解析-应用程序崩溃

  6. 6

    Android应用程序在解析JSON中被关闭

  7. 7

    从应用程序读取php文件中的json对象

  8. 8

    如何从模块更改应用程序中 JSON 对象的值?

  9. 9

    Android应用程序的JSOUP解析问题

  10. 10

    如何获取任何网站的JSON数据以在我的Android本机应用程序中解析和使用

  11. 11

    从android应用程序中的php文件读取JSON数据

  12. 12

    在Angular2应用程序中渲染JSON对象将导致“对象对象”

  13. 13

    iOS应用程序中的搜索栏以搜索PHP / MYSQLi并将JSON解析回iOS应用程序?

  14. 14

    将dplyr中的get(paste0())对象解析为Shiny应用程序

  15. 15

    如何通过url发送对象列表并在spring应用程序中解析

  16. 16

    将json对象与内部对象一起使用到android应用程序

  17. 17

    在Flask中重用应用程序对象

  18. 18

    Android应用程序在简单应用程序中崩溃

  19. 19

    更新 json 以显示 json 数组中的对象计数,而不是 Node 应用程序中的列表

  20. 20

    需要帮助我的 android 应用程序开发项目的 JSON 解析

  21. 21

    在Android应用程序中使用Json

  22. 22

    我需要在Windows Phone应用程序C#中解析json结果

  23. 23

    在 swift 4 for Mac OS 应用程序中解析 json 时出现错误“数据损坏”

  24. 24

    如何从我的Android应用程序将JSON对象发送到服务器

  25. 25

    如何从Android应用程序将此类对象发布到Json?

  26. 26

    如何使用 Android 应用程序反序列化 Json 对象

  27. 27

    如何在vue.js应用程序中访问外部json文件对象

  28. 28

    从MVC应用程序中预编译的类序列化JSON对象

  29. 29

    从MVC应用程序中预编译的类序列化JSON对象

热门标签

归档