2012-02-03 74 views
1

我從Android設備連接到服務器並查詢數據庫並在屏幕上顯示結果。但是我想在ListView中顯示我的結果。我怎樣才能讓我的代碼在ListView中顯示?目前它只是解析數據並將其顯示在屏幕上。我怎樣才能給聯繫人名稱的每個值作爲參考值?下面是我的代碼:解析JSON輸出到ListView中

public class DbConnectActivity extends Activity { 
/** Called when the activity is first created. */ 

    TextView txt; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    // Create a crude view - this should really be set via the layout resources 
    // but since its an example saves declaring them in the XML. 
    LinearLayout rootLayout = new LinearLayout(getApplicationContext()); 
    txt = new TextView(getApplicationContext()); 
    rootLayout.addView(txt); 
    setContentView(rootLayout); 

    // Set the text and call the connect function. 
    txt.setText("Connecting..."); 
    //call the method to run the data retreival 
    txt.setText(getServerData(KEY_121)); 



} 
public static final String KEY_121 = "http://10.0.2.2/dbconnect.php"; //i use my real ip here 



private String getServerData(String returnString) { 

    InputStream is = null; 
    String result = ""; 


    //the year data to send 
    // ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
    //nameValuePairs.add(new BasicNameValuePair("EngID","1")); 

    //http post 
    try{ 
      HttpClient httpclient = new DefaultHttpClient(); 
      HttpPost httppost = new HttpPost(KEY_121); 
      //httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
      HttpResponse response = httpclient.execute(httppost); 
      HttpEntity entity = response.getEntity(); 
      is = entity.getContent(); 

    }catch(Exception e){ 
      Log.e("log_tag", "Error in http connection "+e.toString()); 
    } 

    //convert response to string 
    try{ 

      BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8); 
      StringBuffer sb = new StringBuffer(); 
      String line = ""; 
      while ((line = reader.readLine()) != null) { 
        sb.append(line + "\n"); 
      } 
      is.close(); 
      result=sb.toString(); 
      //return result; 


    }catch(Exception e){ 
      Log.e("log_tag", "Error converting result "+e.toString()); 
    } 
    //parse json data 
    try{ 
      JSONArray jArray = new JSONArray(result); 
      for(int i=0;i<jArray.length();i++){ 
        JSONObject json_data = jArray.getJSONObject(i); 
        Log.i("log_tag","Name: "+json_data.getString("ContactName") 
          ); 
        //Get an output to the screen 
        returnString += "\n\t" + jArray.getJSONObject(i); 

      } 
    }catch(JSONException e){ 
      Log.e("log_tag", "Error parsing data "+e.toString()); 
    } 

    return returnString; 
} 

} 
+0

從logcat中放了一些行..這樣我們可以得到一些想法 – 2012-02-03 09:33:06

回答

4
public class JsonExampleActivity extends ListActivity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     //setContentView(R.layout.main); 
     setListAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, this.fetchTwitterPublicTimeline())); 
    } 

    public ArrayList<String> fetchTwitterPublicTimeline() 
    { 
     ArrayList<String> listItems = new ArrayList<String>(); 

     try { 
      URL twitter = new URL("your url here"); 

      URLConnection tc = twitter.openConnection(); 
      BufferedReader in = new BufferedReader(new InputStreamReader(
        tc.getInputStream())); 

      String line; 
      while ((line = in.readLine()) != null) { 
        JSONObject ja = new JSONObject(line); 
       /* 
       //for (int i = 0; i < ja.length(); i++) { 
        JSONObject jo = ja.getJSONObject("_api_error"); 
        listItems.add(jo.getString("name"));*/ 

        JSONArray jobj=ja.getJSONArray("artists"); 
        //JSONArray ja = new JSONArray(line); 
       for (int i = 0; i < jobj.length(); i++) { 
        JSONObject jo = jobj.getJSONObject(i); 
        listItems.add(jo.getString("artist_name")); 
       } 
       // } 
      } 
     } 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 listItems; 
    } 
} 
+0

感謝得到它使用這些代碼的一些代碼 – DMC 2012-02-08 12:44:30

0

最簡單的事情,我會做的就是把JSONArray一些ArrayList和在arrayadapter使用

0

你可以從那裏添加所有JSON對象到一個列表,然後加載列表on,但是你已經準備了一個返回單個字符串的方法。您可以使用下列內容:

使用

String[] tokens=returnString.split("\n\r"); 
ArrayAdapter adapter=new ArrayAdapter(this, android.R.layout.simple_list_item_1, tokens); 
listView.setAdapter(adapter); 
0

瞭解的自定義適配器則的基礎...

每當你想要做的處理,在一個ListView的意見你 需要創建一個自定義適配器,它將處理您的邏輯 實現並根據需要將該信息傳遞給視圖。