【问题标题】:Retrieve JSON from url in android in Main Class从主类的android中的url检索JSON
【发布时间】:2014-02-07 08:17:01
【问题描述】:

我有一个非常简单的 android 项目,它是一个基本的项目列表。

是否可以在不需要任何其他类或文件的情况下从同一个 Main.java 类中的 URL 获取 JSON?

基本上有没有可以在任何项目中使用的又小又最小的脚本?

我对 java 和 android 开发非常陌生,所以我无法将脚本合并到我的项目中。

Main.java

package com.jamfactory.articles;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ListView;

public class Main extends Activity {
    private ListView listView1;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);                   


        // Get JSON

        // Get JSON      


        List article_data[] = new List[]
        {
            new List(R.drawable.cloudy, "Article One", "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."),
            new List(R.drawable.showers, "Article Two", "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."),
            new List(R.drawable.snow, "Article Three", "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."),
            new List(R.drawable.storm, "Article Four", "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."),
            new List(R.drawable.sunny, "Article Five", "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.")
        };





        ListAdapter adapter = new ListAdapter(this,
                R.layout.listview_item_row, article_data);


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

        View header = (View)getLayoutInflater().inflate(R.layout.listview_header_row, null);
        listView1.addHeaderView(header);

        listView1.setAdapter(adapter);
    }}

【问题讨论】:

  • 是的,但您需要使用 AsyncTask 类。您不应该直接在 MainActivity 中运行网络操作。
  • 不要索要代码。在发布问题或向我们展示您所做的事情之前先谷歌一下

标签: java android json android-listview android-json


【解决方案1】:
package com.jamfactory.articles;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ListView;

public class Main extends Activity {
    private ListView listView1;
    String JSON;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);                   
        String url = “”//the url from where you want to fetch the
JSON
        new PerformBackgroundTask.execute(url);
        // Get JSON

        // Get JSON      


        List article_data[] = new List[]
        {
            new List(R.drawable.cloudy, "Article One", "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."),
            new List(R.drawable.showers, "Article Two", "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."),
            new List(R.drawable.snow, "Article Three", "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."),
            new List(R.drawable.storm, "Article Four", "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."),
            new List(R.drawable.sunny, "Article Five", "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.")
        };





        ListAdapter adapter = new ListAdapter(this,
                R.layout.listview_item_row, article_data);


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

        View header = (View)getLayoutInflater().inflate(R.layout.listview_header_row, null);
        listView1.addHeaderView(header);

        listView1.setAdapter(adapter);
    }}



class PerformBackgroundTask extends AsyncTask<Void, Void, Void> {
String url;
        public PerformBackgroundTask(String url1){
this.url = url1;
}

        @Override
        protected Void doInBackground(Void... params) {
            // TODO Auto-generated method stub

           JSON = performHtpGet(url)

    //HERE JSON IS THE VALUE WHICH IS FETCHED
            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            // TODO Auto-generated method stub
            super.onPostExecute(result);

    }


 private String performHtpGet(String queryUrl ){
            try{
                DefaultHttpClient httpClient = new DefaultHttpClient();
                Log.d("Inside performHtpGet():", "1");
                HttpGet get = new HttpGet(BASE_URL+queryUrl);
                Log.d("Inside performHtpGet():", "2");
                HttpResponse response = httpClient.execute(get);
                Log.d("Inside performHtpGet():", "4");
                String result = EntityUtils.toString(response.getEntity());
                Log.d("Inside performHtpGet():", "5");          
                return result;
            }catch(Exception e){
                return null;
            }
        }

【讨论】:

  • 这给了我 Eclipse 中的一堆错误,但是如果我将它移到它自己的 json.java 类中,它们就会消失。但是我如何连接数据以返回 Main.java 类?很抱歉我很困惑:)
  • 我已经编辑了代码try dis。这里的“结果”是你想要使用的 JSON
  • 我在哪里可以使用结果?我要运行什么功能?
猜你喜欢
  • 1970-01-01
  • 2015-07-12
  • 1970-01-01
  • 2020-04-04
  • 2016-02-10
  • 2016-06-04
  • 1970-01-01
  • 1970-01-01
  • 2014-11-27
相关资源
最近更新 更多