2016-03-25 19 views
2

JSON URLリンクからJSON結果を表示しようとしています。現在、ロードすると何も表示されず、空白のページしか表示されません。 This is the source where I got information about JSONANDROID、WebサーバーからJSONデータを解析してListViewに表示

この

は私のコードです:

public class DVLAresult extends AppCompatActivity { 


    public class DVLAlist extends ListActivity { 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 

      super.onCreate(savedInstanceState); 
      setContentView(R.layout.content_dvlaresult); 


      setListAdapter(new ArrayAdapter(
        this,android.R.layout.simple_list_item_2, 
        this.populate())); 
     } 


     private ArrayList<String> populate() { 
      ArrayList<String> items = new ArrayList<String>(); 

      TextView newtext = (TextView) findViewById(R.id.view_number); 

      try { 
       URL url = new URL 
         ("https://dvlasearch.appspot.com/DvlaSearch?licencePlate=mt09nks&apikey=DvlaSearchDemoAccount"); 
       HttpURLConnection urlConnection = 
         (HttpURLConnection) url.openConnection(); 
       urlConnection.setRequestMethod("GET"); 
       urlConnection.connect(); 
       // gets the server json data 
       BufferedReader bufferedReader = 
         new BufferedReader(new InputStreamReader(
           urlConnection.getInputStream())); 
       String next; 
       while ((next = bufferedReader.readLine()) != null) { 
        JSONArray ja = new JSONArray(next); 

        for (int i = 0; i < ja.length(); i++) { 
         JSONObject jo = (JSONObject) ja.get(i); 
         items.add(jo.getString("text")); 
        } 
       } 
      } catch (MalformedURLException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (JSONException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      return items; 
     } 
    } 
} 

そして、これは私のXMLファイルsimple_list_2.xml

<?xml version="1.0" encoding="utf-8"?> 

<TwoLineListItem xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:minHeight="?attr/listPreferredItemHeight" 
    android:mode="twoLine" 
    android:paddingStart="?attr/listPreferredItemPaddingStart" 
    android:paddingEnd="?attr/listPreferredItemPaddingEnd"> 

    <TextView android:id="@id/text1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="8dp" 
     android:textAppearance="?attr/textAppearanceListItem" /> 

    <TextView android:id="@id/text2" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/text1" 
     android:layout_alignStart="@id/text1" 
     android:textAppearance="?attr/textAppearanceListItemSecondary" /> 

    <TextView android:id="@id/text3" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/text2" 
     android:layout_alignStart="@id/text2" 
     android:textAppearance="?attr/textAppearanceListItemSecondary" /> 

... Continue up to text18, because I have 18 fields. 

</TwoLineListItem> 

であり、これは私が似て発生したために起こる主なXMLのリストビュー

<ListView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/list" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" 
     android:layout_above="@+id/button2" 
     android:layout_below="@+id/view_number" /> 
+0

あなたは、一般的なスレッドと同じスレッド上の要求を行うことができません。 'Asynctask'を拡張するクラスを使用するか、Retrofit、Volleyなどのライブラリを使用してください。 –

+0

リクエストはメインアクティビティから実行され、これは第2のアクティビティです。だから私は値を設定し、この値に従ってURLを変更します。しかし現在、結果を表示する必要はありません。私は私の質問を更新し、私は情報を持っているソースを置くだろうJSON –

+0

あなたは例外を得ることができますか?あなたがメインスレッドでネットワーク接続を行っているようです...とにかく問題がある場合は、コード内のすべてのステップでデバッグメッセージを出力する必要があります(Log.i( "json"、 "method called populate()" ))。これは、難しい部分を見つけるのに役立ちます。あなたは常にあなたが有効な応答を得るためにURL接続のようなものから結果を印刷する必要があります。 – Luftbaum

答えて

2

です問題。解決策を見つけるのに役立つコードは次のとおりです。これがあなたを助けることを願っています。エミュレータ上

activity_main.xml

<?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:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity"> 


    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="SEND GET REQUEST" 
     android:id="@+id/sendGet" 
     android:onClick="sendGetRequest" 
     android:layout_alignParentStart="true" /> 

    <ScrollView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/scrollView" 
     android:layout_below="@+id/sendGet" 
     android:layout_centerHorizontal="true"> 

     <TextView 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="Response ....." 
      android:id="@+id/showOutput" 
      android:layout_alignEnd="@+id/scrollView" 
      android:layout_marginEnd="34dp" /> 

    </ScrollView> 

</RelativeLayout> 

MainActivity.java

import android.app.ProgressDialog; 
import android.content.Context; 
import android.net.Uri; 
import android.os.AsyncTask; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.TextView; 

import com.google.android.gms.appindexing.Action; 

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

import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.DataOutputStream; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.io.OutputStream; 
import java.io.OutputStreamWriter; 
import java.net.HttpURLConnection; 
import java.net.MalformedURLException; 
import java.net.URL; 

public class MainActivity extends AppCompatActivity { 

    private ProgressDialog progress; 
    /** 
    * ATTENTION: This was auto-generated to implement the App Indexing API. 
    * See https://g.co/AppIndexing/AndroidStudio for more information. 
    */ 
// private GoogleApiClient client; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     // ATTENTION: This was auto-generated to implement the App Indexing API. 
     // See https://g.co/AppIndexing/AndroidStudio for more information. 
    //  client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build(); 
    } 

    public void sendGetRequest(View View) { 
     new GetClass(this).execute(); 
    } 

    @Override 
    public void onStart() { 
     super.onStart(); 

     // ATTENTION: This was auto-generated to implement the App Indexing API. 
     // See https://g.co/AppIndexing/AndroidStudio for more information. 
//  client.connect(); 
     Action viewAction = Action.newAction(
       Action.TYPE_VIEW, // TODO: choose an action type. 
       "Main Page", // TODO: Define a title for the content shown. 
       // TODO: If you have web page content that matches this app activity's content, 
       // make sure this auto-generated web page URL is correct. 
       // Otherwise, set the URL to null. 
       Uri.parse("http://host/path"), 
       // TODO: Make sure this auto-generated app deep link URI is correct. 
       Uri.parse("android-app://com.example.gunawardena.get_post_demo/http/host/path") 
     ); 
//  AppIndex.AppIndexApi.start(client, viewAction); 
    } 

    @Override 
    public void onStop() { 
     super.onStop(); 

     // ATTENTION: This was auto-generated to implement the App Indexing API. 
     // See https://g.co/AppIndexing/AndroidStudio for more information. 
     Action viewAction = Action.newAction(
       Action.TYPE_VIEW, // TODO: choose an action type. 
       "Main Page", // TODO: Define a title for the content shown. 
       // TODO: If you have web page content that matches this app activity's content, 
       // make sure this auto-generated web page URL is correct. 
       // Otherwise, set the URL to null. 
       Uri.parse("http://host/path"), 
       // TODO: Make sure this auto-generated app deep link URI is correct. 
       Uri.parse("android-app://com.example.gunawardena.get_post_demo/http/host/path") 
     ); 
     // AppIndex.AppIndexApi.end(client, viewAction); 
     // client.disconnect(); 
    } 

    private class GetClass extends AsyncTask<String, Void, Void> { 

     private final Context context; 

     public GetClass(Context c) { 
      this.context = c; 
     } 

     protected void onPreExecute() { 
      progress = new ProgressDialog(this.context); 
      progress.setMessage("Loading Get Method....."); 
      progress.show(); 
     } 

     @Override 
     protected Void doInBackground(String... params) { 
      try { 

       final TextView outputView = (TextView) findViewById(R.id.showOutput); 
       URL url = new URL("https://dvlasearch.appspot.com/DvlaSearch?licencePlate=mt09nks&apikey=DvlaSearchDemoAccount"); 
       HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 

       connection.setRequestMethod("GET"); 
       connection.setRequestProperty("USER-AGENT", "Mozilla/5.0"); 
       connection.setRequestProperty("ACCEPT-LANGUAGE", "en-US,en;0.5"); 

       int responseCode = connection.getResponseCode(); 

       final StringBuilder output = new StringBuilder("Request URL " + url); 
       output.append(System.getProperty("line.separator") + "Response Code " + responseCode); 
       output.append(System.getProperty("line.separator") + "Type " + "GET"); 
       BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream())); 
       String line = ""; 
       StringBuilder responseOutput = new StringBuilder(); 
       System.out.println("output===============" + br); 
       while ((line = br.readLine()) != null) { 
        responseOutput.append(line); 
       } 
       br.close(); 

       output.append(System.getProperty("line.separator") + "Response " + System.getProperty("line.separator") + System.getProperty("line.separator") + responseOutput.toString()); 

       MainActivity.this.runOnUiThread(new Runnable() { 

        @Override 
        public void run() { 
         outputView.setText(output); 
         progress.dismiss(); 

        } 
       }); 

      } catch (MalformedURLException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      return null; 
     } 
    } 
} 

出力

enter image description here

HTH


参考文献:

+0

これが助けになる場合、JSONデータを解析する質問があれば教えてください。 –

関連する問題