2014-02-07 3 views
-2

나는 항목의 기본 목록 인 매우 간단한 android 프로젝트를 가지고 있습니다.메인 클래스의 Android에서 url로부터 JSON 검색

다른 클래스 나 파일을 사용하지 않고 동일한 Main.java 클래스의 URL에서 JSON을 가져올 수 있습니까?

기본적으로 모든 프로젝트에서 사용할 수있는 작고 작은 스크립트가 있습니까?

나는 내 프로젝트에 스크립트를 통합하는 데 문제가있어서 자바와 안드로이드 개발에 매우 ​​익숙하다.

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); 
    }} 
+1

예 그것은 가능하지만 당신은 AsyncTask를 클래스를 사용해야합니다. MainActivity에서 네트워크 작업을 직접 실행하면 안됩니다. – user3264399

+0

코드를 요구하지 마십시오. Google에 질문을 게시하기 전에 또는 내가 한 일을 보여주기 – alecnash

답변

0
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; 
      } 
     } 
+0

이것은 Eclipse에서 많은 오류를 발생시킵니다.하지만이 코드를 자신의 json.java 클래스로 옮기면 사라집니다. 하지만 Main.java 클래스로 돌아가려면 데이터를 어떻게 연결해야합니까? 죄송합니다. 매우 혼란 스럽습니다. – Sebastian

+0

코드를 편집 해보십시오. 여기서 "결과"는 사용하려는 JSON입니다. –

+0

어디에서 결과를 사용할 수 있습니까? 어떤 기능을 실행합니까? – Sebastian