2012-05-10 14 views
0

を取得する私はJSONオブジェクトを取得するクラスです。このコードでは、私は1つのオブジェクトのみを取得し、私は本当にメソッドから戻る方法がわからない、それが呼ばれるSetTextメソッドであり、唯一のJSONオブジェクトがどこに行くそこにある保護されたボイド方法があります。私が何をしたいかJSON MySQLはここでは二つの整数と文字列

public class ConnectMySql extends Activity { 

TextView httpStuff; 
HttpClient client; 
JSONObject json; 

final static String URL = "http://79.114.48.119/RadarsMySql.php"; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    httpStuff = (TextView) findViewById(R.id.tvHttp); 
    client = new DefaultHttpClient(); 
    new Read().execute("latitude"); 
} 


public JSONObject lastTweet(String username) throws ClientProtocolException, IOException,JSONException{ 
    StringBuilder url = new StringBuilder(URL); 
    url.append(username); 


    HttpGet get = new HttpGet(url.toString()); 
    HttpResponse r = client.execute(get); 
    int status = r.getStatusLine().getStatusCode(); 
    //if(status == 200){ 
     HttpEntity e = r.getEntity(); 

     String data = EntityUtils.toString(e); 
     data = data.substring(data.indexOf("[")); 

     JSONArray timeline = new JSONArray(data); 
     JSONObject last = timeline.getJSONObject(0); 
     return last; 

    //}else{ 
     //Toast.makeText(ConnectMySql.this, "error", Toast.LENGTH_LONG); 
     //return null; 

    //} 
} 

public class Read extends AsyncTask<String, Integer, String>{ 

    @Override 
    protected String doInBackground(String... params) { 
     // TODO Auto-generated method stub 
     try { 
      json = lastTweet(""); 
      return json.getString(params[0]); 
     } 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 null; 
    } 

    @Override 
    public void onPostExecute(String result) { 
     // TODO Auto-generated method stub 
     httpStuff.setText(result); 
     int myNum = 0; 

     try { 
      myNum = Integer.parseInt(result); 
      httpStuff.setText(myNum); 
     } catch(NumberFormatException nfe) { 
      System.out.println("Could not parse " + nfe); 
     } 
    } 

} 

} 

私は、オブジェクトの3種類(exempleの緯度を格納することができ、配列を持つことである[1]、経度、[1]、説明[1];緯度は、[2]など。私は緯度と経度を整数としたい)。この後、forループを使用して、この3つのパラメータを持つ関数を呼び出します。誰かが私を助けたり、私にいくつかのヒントを与えることができますか? ありがとうございました!それはバックグラウンドで実行されるよう

+0

誰も私を助けることはできませんか? –

+0

ええ、お友達に教えてください。 – Akram

+0

誰も知らない? ? –

答えて

1

はいけない、AsyncTaskを使用し、それはあなたのためにいくつかの問題が発生する理由です。

そして、あなたはあなたのTwitterのARSERの作業を持っている場合、AsyncTaskでそれを統合します。下記のコードはテストされていません。

public class ConnectMySql extends Activity { 

TextView httpStuff; 
HttpClient client; 
int i; 
JSONObject json; 

final static String URL = "http://localhost/RadarsMySql.php"; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    httpStuff = (TextView) findViewById(R.id.tvHttp); 
    client = new DefaultHttpClient(); 
    for(i=0;i<2;i++){ 
    new Read().execute("latitude"); 

     try { 
      json = lastTweet("",i); 

      String result = json.getString(params[i]); 

     httpStuff.setText(result); 
      int myNum = 0; 

      try { 
       myNum = Integer.parseInt(result); 
       httpStuff.setText(myNum); 
      } catch(NumberFormatException nfe) { 
       System.out.println("Could not parse " + nfe); 
      } 


     } 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(); 
     } 

    } 
} 


public JSONObject lastTweet(String username,int i) throws ClientProtocolException, IOException,JSONException{ 
    StringBuilder url = new StringBuilder(URL); 
    url.append(username); 


    HttpGet get = new HttpGet(url.toString()); 
    HttpResponse r = client.execute(get); 
    int status = r.getStatusLine().getStatusCode(); 
    //if(status == 200){ 
     HttpEntity e = r.getEntity(); 

     String data = EntityUtils.toString(e); 
     data = data.substring(data.indexOf("[")); 

     JSONArray timeline = new JSONArray(data); 
     JSONObject last = timeline.getJSONObject(i); 
     return last; 

    //}else{ 
     //Toast.makeText(ConnectMySql.this, "error", Toast.LENGTH_LONG); 
     //return null; 

    //} 
} 

} 
+0

2つのエラーが発生します: 'new Read()。execute(" latitude "); 'と' String result = json.getString(params [i]); 'となります。それらはどちらもタイプとして再解析できません:paramsとRead。任意のヒント ? –

+0

どうすればいいですか?新しい読み取り実行を削除しますか? –

関連する問題