private ArrayList<Map<String,String>> lista; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.test); loadData(); } public void loadData(){ try{ new LoadingData().execute(""); }catch(Exception e){ //... } } private class LoadingData extends AsyncTask<String, Void, Void>{ private ProgressDialog Dialog = new ProgressDialog(Main.this); protected void onPreExecute() { Dialog.setMessage("Loading..."); Dialog.show(); } protected Void doInBackground(String... urls) { lista = new ArrayList<Map<String,String>>(); List<Book> listBook = new ArrayList<Book>(); ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); try { //esempio di parametro che si aspetta un file jsp o asp nameValuePairs.add(new BasicNameValuePair("action", "select")); HttpClient httpclient = new DefaultHttpClient(); HttpParams params = httpclient.getParams(); HttpConnectionParams.setConnectionTimeout(params, 5); HttpConnectionParams.setSoTimeout(params, 5); HttpPost httppost = new HttpPost("http://" + "192.168.xxx.xxx"); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); //risposta della jsp o asp HttpResponse response = httpclient.execute(httppost); HttpEntity entity = response.getEntity(); InputStream is = entity.getContent(); BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8); String line = null; Book Book; /* immaginando delle righe tipo: I promessi sposi|9 La divina commedia|10 ... scorro i record e carico la lista */ while ((line = reader.readLine()) != null) { String[] result=line.split("\\|"); String desc =result[1]; String amount = result[2]; Book = new Book(); Book.setDescription(desc); Book.setAmount(amount); listBook.add(Book); } is.close(); } catch (ClientProtocolException e) { return null; } catch (IOException e) { return null; } catch (Exception e) { return null; } for (Book Book : listBook) { Map<String,String> data = new HashMap<String,String>(); data.put(DESC,Book.getDescription()); data.put(AMOUNT,Book.getAmount()); lista.add(data); } return null; } protected void onPostExecute(Void unused) { Dialog.dismiss(); //... eventuale popolamento di un SimpleAdapter } }
Sorgenti, linguaggi, best practice, suggerimenti, sul mondo della programmazione e non solo
giovedì 28 giugno 2012
Caricamento dati in un BufferedReader da un ip locale/remoto con dialog "Loading..."
All'evento onCreate di una activity possiamo fare la richiesta ad un ip (ad esempio con asp, jsp, etc.) e alimentare una ArrayList di "Book", utile per un eventuale popolamento di un "SimpleAdapter".