Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在主类中从android中的url检索JSON_Java_Android_Json_Android Listview_Android Json - Fatal编程技术网

Java 在主类中从android中的url检索JSON

Java 在主类中从android中的url检索JSON,java,android,json,android-listview,android-json,Java,Android,Json,Android Listview,Android Json,我有一个非常简单的android项目,它是一个基本的项目列表 是否可以在不需要任何其他类或文件的情况下从同一Main.java类中的URL获取JSON? 基本上,是否有一个小而小的脚本可以在任何项目中使用 我对java和android开发非常陌生,所以在将脚本整合到我的项目中时遇到了困难 Main.java package com.jamfactory.articles; import android.app.Activity; import android.os.Bundle; import

我有一个非常简单的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);
    }}
package com.jamfactory.articles;
导入android.app.Activity;
导入android.os.Bundle;
导入android.view.view;
导入android.widget.ListView;
公共类主要扩展活动{
私有列表视图列表视图1;
字符串JSON;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String url=”“//要从中获取数据的url
JSON
新建PerformBackgroundTask.execute(url);
//获取JSON
//获取JSON
列表项目_数据[]=新列表[]
{
新列表(R.drawable.cloudy,“第一条”,“Lorem ipsum dolor sit amet,concetetur adipising elit,sed do eiusmod temporal incidedut ut laboure and dolore magna aliqua.”),
新列表(R.drawable.Burses,“第二条”,“Lorem ipsum door sit amet,concetetur adipising elit,sed do eiusmod temporal incidedut ut laboure and dolore magna aliqua.”),
新名单(R.drawable.snow,“第三条”,“知识产权”或“知识产权”或“知识产权”或“知识产权”或“知识产权”或“知识产权”或“知识产权”等),
新名单(R.drawable.storm,“第四条”,“知识产权”或“知识产权”或“知识产权”或“知识产权”或“知识产权”或“知识产权”或“知识产权”等),
新名单(R.drawable.sunny,“第五条”,“知识产权”或“知识产权”或“知识产权”或“知识产权”或“知识产权”或“知识产权”或“知识产权”等)
};
ListAdapter=新的ListAdapter(此,
R.layout.listview(项目行、文章数据);
listView1=(ListView)findViewById(R.id.listView1);
视图标题=(视图)GetLayoutFlater()。充气(R.layout.listview\u header\u行,空);
listView1.addHeaderView(标题);
listView1.setAdapter(适配器);
}}
类PerformBackgroundTask扩展了AsyncTask{
字符串url;
公共PerformBackgroundTask(字符串url1){
this.url=url1;
}
@凌驾
受保护的Void doInBackground(Void…参数){
//TODO自动生成的方法存根
JSON=performHtpGet(url)
//这里JSON是获取的值
返回null;
}
@凌驾
受保护的void onPostExecute(void结果){
//TODO自动生成的方法存根
super.onPostExecute(结果);
}
私有字符串performHtpGet(字符串查询){
试一试{
DefaultHttpClient httpClient=新的DefaultHttpClient();
d(“内部performHtpGet():”,“1”);
HttpGet=新的HttpGet(基本URL+queryUrl);
d(“内部performHtpGet():”,“2”);
HttpResponse response=httpClient.execute(get);
d(“内部performHtpGet():”,“4”);
字符串结果=EntityUtils.toString(response.getEntity());
d(“内部performHtpGet():”,“5”);
返回结果;
}捕获(例外e){
返回null;
}
}

是的,这是可能的,但您需要使用AsyncTask类。您不应该直接在MainActivity中运行网络操作。不要问代码。在发布问题或向我们展示您所做的事情之前,先用谷歌搜索一下。这在Eclipse中会给我带来一系列错误,但如果我将其移动到它自己的json.java类中,它们就会消失。但是我如何将数据连接到r返回Main.java类?很抱歉我很困惑:)我已经编辑了代码try dis。这里的“result”是您想要使用的JSON。我在哪里可以使用result?我运行什么函数?
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;
            }
        }