2013-07-15 17 views
1

我想知道的線程或的AsyncTask我connextion和exctration的實施者如何給Android設備上mysql數據庫2.3.3它的工作原理,但不是資源的問題4.1,感謝我需要你的幫助Probleme螺紋連接mysql數據庫的Android

package com.example.test; 

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.net.URI; 
import java.util.ArrayList; 

import org.apache.http.HttpResponse; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.methods.HttpGet; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.json.JSONArray; 
import org.json.JSONException; 

import android.app.Activity; 
import android.content.Intent; 
import android.content.res.Resources; 
import android.graphics.Color; 
import android.os.Bundle; 
import android.os.StrictMode; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.widget.ListView; 
import android.widget.TextView; 
import android.widget.Toast; 

public class Actu_Connextion extends Activity { 

    Actualite oActualite; 
    ArrayList<Actualite> listeActualites; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

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

     int actionBarTitleId = Resources.getSystem().getIdentifier("action_bar_title", "id", "android"); 
     TextView actionBarTextView = (TextView)findViewById(actionBarTitleId); 
     actionBarTextView.setTextColor(Color.WHITE); 


     this.listeActualites = new ArrayList<Actualite>(); 

    } 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.refresh, menu); 
     return true; 
    } 
    public boolean onOptionsItemSelected(MenuItem item){  // Quand on appuis sur l/'item 
      switch (item.getItemId()){ 

       case R.id.refresh:      // selectionne l'item par id 
        return true; 

       case R.id.back_menu_principale:      // selectionne l'item par id 
        Intent intent = new Intent(getBaseContext() ,MainActivity.class); 
        startActivity(intent); 
       default: 
        return super.onOptionsItemSelected(item); 
      } 
     } 

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

     StringBuffer stringB = new StringBuffer(""); 
     BufferedReader bufR = null; 

     try{ 
      HttpClient client = new DefaultHttpClient(); 
      HttpGet requete = new HttpGet(); 
      URI uri = new URI("http://192.168.1.5/actu.php"); 
      requete.setURI(uri); 
      HttpResponse reponse = client.execute(requete); 
      InputStream is = reponse.getEntity().getContent(); 
      bufR = new BufferedReader(new InputStreamReader(is)); 
      String ligneLue = bufR.readLine(); 
      while(ligneLue != null){ 
       stringB.append(ligneLue); 
       stringB.append("\n"); 
       ligneLue = bufR.readLine(); 
      } 
     }catch(Exception e){ 
       e.printStackTrace(); 
      }finally{ 
       if(bufR != null){ 
        try{ 
        bufR.close(); 
        }catch(IOException ioe){ 
         ioe.printStackTrace(); 
         Toast.makeText(this, ioe.getMessage(), Toast.LENGTH_LONG).show(); 
        } 
       } 
      } 
     try{ 
      JSONArray jArray = new JSONArray(stringB.toString()); 
      for(int i = 0; i<jArray.length(); i++){ 
       oActualite = new Actualite(); 
       oActualite.setoContenu(jArray.getJSONObject(i).getString("contenu").toString()); 
       oActualite.setoChemin(jArray.getJSONObject(i).getString("chemin").toString()); 
       oActualite.setoDate(jArray.getJSONObject(i).getString("date").toString()); 

       this.listeActualites.add(oActualite); 
      } 
     }catch(JSONException jex){ 
      jex.printStackTrace(); 
      Toast.makeText(this, jex.getMessage(), Toast.LENGTH_LONG).show(); 
     } 
     if(listeActualites != null){ 
      ActualiteAdapter adapter = new ActualiteAdapter(this, listeActualites); 
      ListView listeVueActualites = (ListView) findViewById(R.id.lstActualites); 
      listeVueActualites.setAdapter(adapter); 
     } 
    } 
} 

回答

0

把你的HTTP連接在doInBackground和postexecute method.For更多信息檢查返回列表[開發的Android]試試這個(http://developer.android.com/reference/android/os/AsyncTask.html

private class DownloadTask extends AsyncTask<String, Integer, List<oActualite>>{ 


    // Invoked by execute() method of this object 
    @Override 
    protected List<oActualite> doInBackground(String... jsonData) { 

     StringBuffer stringB = new StringBuffer(""); 
    BufferedReader bufR = null; 

    try{ 
     HttpClient client = new DefaultHttpClient(); 
     HttpGet requete = new HttpGet(); 
     URI uri = new URI("http://192.168.1.5/actu.php"); 
     requete.setURI(uri); 
     HttpResponse reponse = client.execute(requete); 
     InputStream is = reponse.getEntity().getContent(); 
     bufR = new BufferedReader(new InputStreamReader(is)); 
     String ligneLue = bufR.readLine(); 
     while(ligneLue != null){ 
      stringB.append(ligneLue); 
      stringB.append("\n"); 
      ligneLue = bufR.readLine(); 
     } 
    }catch(Exception e){ 
      e.printStackTrace(); 
     }finally{ 
      if(bufR != null){ 
       try{ 
       bufR.close(); 
       }catch(IOException ioe){ 
        ioe.printStackTrace(); 
        Toast.makeText(this, ioe.getMessage(), Toast.LENGTH_LONG).show(); 
       } 
      } 
     } 
    try{ 
     JSONArray jArray = new JSONArray(stringB.toString()); 
     for(int i = 0; i<jArray.length(); i++){ 
      oActualite = new Actualite(); 
      oActualite.setoContenu(jArray.getJSONObject(i).getString("contenu").toString()); 
      oActualite.setoChemin(jArray.getJSONObject(i).getString("chemin").toString()); 
      oActualite.setoDate(jArray.getJSONObject(i).getString("date").toString()); 

      this.listeActualites.add(oActualite); 

      ActualiteAdapter adapter = new ActualiteAdapter(this, listeActualites); 
     ListView listeVueActualites = (ListView) findViewById(R.id.lstActualites); 
     } 
    }catch(JSONException jex){ 
     jex.printStackTrace(); 
     Toast.makeText(this, jex.getMessage(), Toast.LENGTH_LONG).show(); 
    } 
    } 

    // Executed after the complete execution of doInBackground() method 
    @Override 
    protected void onPostExecute(List<oActualite> list){ 
     ListView listView = (ListView) findViewById(R.id.listview); 
     listView.setAdapter(adapter); 
     } 
    } 
} 

}

+0

我還沒有理解好如何在我的情況下,使用參數:/ – Predator

+0

編輯我的帖子檢查一次u必須做這樣的事情 –

+0

我用你的代碼取代的ArrayList列表在適配器錯誤我如何能夠在適合未定義的構造函數的情況下判斷錯誤 – Predator