嗨我想知道线程或AsyncTask的实现者如何为我的连接和exctration给出一个android 2.3.3上的mysql数据库它可以工作,但不是4.1资源的问题,谢谢我需要你的帮助
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 :(得分:0)
将你的http连接放在doInBackground中并从postexecute方法返回列表。有关更多信息,请查看[Developer 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);
}
}
}
}