2014-05-13 3 views
0

Там я начинаю дешифровать в андроиде, и я хочу получить данные JSON с веб-сайта и сделать ListView всех ID. я chacked и я получаю Джейсон RAWDATA из Интернета, но когда я пытаюсь сделать его объект JSON теряется и после того, как делать, как я могу сделать мой JSon массив для ListView On Main UIСоздание списка с данными JSON

Xml

<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="wrap_content" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" > 

    <ScrollView android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/ScroolView"> 
    <TextView //for testing rawData 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/DataText" /> 
    </ScrollView> 

    <ListView 
     android:id="@+id/listView1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@+id/ScroolView" 
     android:headerDividersEnabled="true" > 

     </ListView> 

</RelativeLayout> 





package com.example.getjson; 

import android.app.Activity; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.TextView; 
import android.widget.Toast; 

public class MainActivity extends Activity { 
    TextView textView; 
    ListView lv; 
    @Override 

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

     textView = (TextView) findViewById(R.id.DataText);   
     lv = (ListView) findViewById(R.id.listView1); 

     Toast.makeText(getBaseContext(),"Start",Toast.LENGTH_LONG).show(); 
     DownloadData DLD= new DownloadData(); 
     DLD.execute(); 


    } 

class DownloadData extends AsyncTask<String , Void , String>{ 
    String Data; 
    String [] item; 
@Override 
    protected String doInBackground(String... Void) { 
      RequestHtml rh= new RequestHtml(); 
      Data = rh.fatchData(); 
      item = rh.ftachArray(); 
      ArrayAdapter<String> adapt = 
         new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, item); 


     return Data; 
    } 

    @Override 
    protected void onPostExecute (String text){ 

     textView.setText(Data); 



    } 



} 


} 

и вот как я получаю мои данные с веб-сайтов

import java.io.IOException; 

import org.apache.http.client.ClientProtocolException; 
import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 


public class RequestHtml { 

     JSONArray contacts = null; 
    String Url="http://api.androidhive.info/contacts/"; 

    //public ArrayList<Emploee> FatchEmploee(){ 
    public String fatchData(){ 
     //ArrayList<Emploee> allEmploeeys = new ArrayList<Emploee>(); 
     Networkconnection network = new Networkconnection(); 
     String RawResponse = new String(); 




      try { 
       RawResponse = network.request(Url); 
      } catch (ClientProtocolException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 



       return RawResponse; 

    } 

    public String [] ftachArray(){ 
     String[] JS= new String []{}; 
     Networkconnection network = new Networkconnection(); 
     String RawResponse1 = new String(); 




      try { 
       RawResponse1 = network.request(Url); 

       JSONObject jo = new JSONObject (RawResponse1); 
       JSONArray contactsArray = jo.getJSONArray("contacts"); 
       for (int i =0; i<contactsArray.length(); i++){ 

        JSONObject jasonid = contactsArray.getJSONObject(i); 
        String id = jasonid.getString("id"); 
        JS [i] = id; 


       } 


      } catch (ClientProtocolException 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 JS; 
    } 

} 

и

public class Networkconnection { 

    public String request(String Url) throws ClientProtocolException, IOException{ 

     // make request 
     HttpGet httpGet = new HttpGet(Url); 
     Log.d("Http", "httpGet"); 
     // make handler to handler the data 
     ResponseHandler<String> responsehandler = new BasicResponseHandler(); 
     Log.d("Http", "Hendler"); 
     //Http client glues together the above 
     HttpClient httpClient = new DefaultHttpClient(); 
     Log.d("Http", "httpclient"); 
     //make the connection 
     String response = httpClient.execute(httpGet,responsehandler); 
      Log.d("Http", "response" + response); 


     return response; 
    } 



} 

ОБНОВЛЕНИЕ: Json выглядит как http://api.androidhive.info/contacts/ Json правильно разобрался Json прав qustion Как экспортировать данные из fatchArray() в MainActivity ??

благодаря FOT помощи

+0

Как выглядит JSON? – BlackHatSamurai

+0

http://api.androidhive.info/contacts/ – user3633923

ответ

0

Убедитесь, что вы получаете ответ JSON первым. Похоже, что фактический ответ возвращает JSONArray внутри JSONObject. Сначала создайте объект JSONObject, а затем выполните команду getJSONArray().

JSONObject responseJson = new JSONObject(RawResponse); 
JSONArray contactsJsonArray = responseJson.getJSONArray("contacts"); 

Затем цикл через contactsJsonArray, чтобы получить фактический контакт JSONObject и разобрать.

+0

Подождите. Почему бы вам не полностью следовать этому сообщению (http://www.androidhive.info/2012/01/android-json-parsing-tutorial/)? Особенно это делает HTTP Get part. Похоже, вы используете этот учебник, чтобы получить список контактов. – Raghu

+0

Я использовал «Руководство для Джейсона» еще больше, чтобы руководство использовало mainactivity extend ListActivity, и я tring с extnds. Активность – user3633923

0

Сделайте класс, расширяющий BaseAdapter, и передайте его JSONArray в его конструкторе. Затем переопределите getItem адаптера, чтобы получить правильный элемент из массива, переопределите getView, чтобы раздуть некоторый вид - simple_list_item1 или аналогичный. Затем просто установите для адаптера атрибут listview.

+0

вы можете дать пример кода? 10x – user3633923

Смежные вопросы