Autore Topic: passaggio di array tramite intent e funzioni  (Letto 781 volte)

Offline volley.sil

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    windows xp, e windows 7
passaggio di array tramite intent e funzioni
« il: 28 Febbraio 2012, 19:25:22 CET »
0
Ciao ragazzi, ho bisogno di voi... devo passare un array dalla funzione chiamata alla funzione chiamante e non so come si fa.
la funzione chiamante è
post=ConnessioneDbVisualizzazionePost(str_nome_corso);   
nella funzione chiamata viene creato un array. Questo array devo fare in modo che ritorni in post e successivamente inviare post ad un'altra activity attraverso l'intent e poi mi servirà per creare l'array adapter, ma non funziona in quanto considera tutto come stringhe e non array.
ps. come si  fa a mandare l'array attraverso l'intent?e a riprenderlo nell'altra activity?

prima activity
Codice (Java): [Seleziona]
post=ConnessioneDbVisualizzazionePost(str_nome_corso); 
                //txtQuery.setText(esito2);
                Intent ListaPostIntent = new Intent (queryListaPost.this, ListaPost.class);
        ListaPostIntent.putExtra("com.CsrForum.android.esito2",post);
        startActivity(ListaPostIntent);
seconda activity

Codice (Java): [Seleziona]
final String[] POST2=getIntent().getExtras().getStringArray("com.CsrForum.android.esito2");
                System.out.println(6);
                for (i = 0; i < POST2.length; i++) {
                                POST[i]= POST2[i];
                        System.out.println(POST[i]);
                        //System.out.println("titolo " + j.getString("titolo"));
                    }
                System.out.println(POST[1]);
                ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                                R.layout.post, R.id.ListView, POST);
                setListAdapter(adapter);
               
        }
per favore qualcuno risponda.. sono in crisi... :-)

Offline alexAndroid

  • Utente normale
  • ***
  • Post: 185
  • Respect: +27
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Giò
  • Sistema operativo:
    Ubuntu 11.10; Windows XP
Re:passaggio di array tramite intent e funzioni
« Risposta #1 il: 28 Febbraio 2012, 23:32:35 CET »
0
ciao Volley,
per poter passare oggetti complessi tra due activity è prima necessario che questi oggetti siano serializzabili.
Su questa pagina dovresti trovare la soluzione al problema (solo che è in inglese)
http://stackoverflow.com/questions/2736389/how-to-pass-object-from-one-activity-to-another-in-android
Sei stato aiutato oppure il tuo problema è stato risolto? Allora premi il tasto THANKS E' un modo utile e carino per ringraziare chi ti è stato di aiuto.

Offline volley.sil

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    windows xp, e windows 7
Re:passaggio di array tramite intent e funzioni
« Risposta #2 il: 29 Febbraio 2012, 11:41:22 CET »
0
il mio problema è che l'array dove salvo i dati è all'interno della funzione ConnessioneDbVisualizzaPost e poi uscendo dalla funzione devo passare tutto a questa activity. Ho provato a fare come mi hai detto però penso di aver fatto alcuni errori pechè ora sembra non entrare neanche nella funzione. La classe dove implemento serialisable quale deve essere?
Ti posto il codice della mia activity.
Codice (Java): [Seleziona]
package com.CsrForum.android;

import java.io.BufferedReader;
import java.io.CharArrayWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.Serializable;
import java.io.StringWriter;
import java.io.Writer;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicHeader;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.protocol.HTTP;
import org.json.JSONArray;
import org.json.JSONObject;

import android.app.Activity;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class queryListaPost extends Activity implements Serializable
{
        /**
         *
         */

        private static final long serialVersionUID = 1L;
        private String titolo;
        public queryListaPost (String titolo) {
                this.titolo = titolo;
        }
        boolean esito;
        TextView txtQuery;
        String[] post;
       
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.lista_post);
                final String str_nome_corso=getIntent().getExtras().getString("corsi");
               
                //txtQuery=(TextView)findViewById(R.id.TextView_lista_post);
                post=ConnessioneDbVisualizzazionePost(str_nome_corso); 
                //txtQuery.setText(esito2);
                Intent ListaPostIntent = new Intent (queryListaPost.this, ListaPost.class);
        ListaPostIntent.putExtra("com.CsrForum.android.esito2", post);
        startActivity(ListaPostIntent);
                //System.out.println(esito);
        }
       

        private String[] ConnessioneDbVisualizzazionePost(String str_nome_corso) {
                String[] POST = new String[100];
                int i;
                HttpClient httpclient = new DefaultHttpClient();
                 final int TIMEOUT_MILLISEC=10000;
                 HttpConnectionParams.setConnectionTimeout(httpclient.getParams(),TIMEOUT_MILLISEC );
                 HttpResponse response;
                 JSONObject json = new JSONObject();
                 try{
                    //ci va l'ip pubblico del proprio computer trovato tramite www.whatismyip.com
                    HttpPost httppost = new HttpPost("http://93.42.228.198/provajsonlistapost.php");
                    json.put("nome_corso", str_nome_corso);
                    StringEntity se=new StringEntity(json.toString());
                    se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,"application/json"));
                    httppost.setEntity(se);
                    response=httpclient.execute(httppost);
                    InputStream in = response.getEntity().getContent();
                    String returnString = convertStreamToString(in);
                    System.out.println(5);
                    System.out.println(returnString);
                    //Log.d(returnString, "");
                    JSONObject returnJson=new JSONObject(returnString);
                    JSONArray jsa = returnJson.getJSONArray("params");
                    System.out.println("jsa.length() " + jsa.length());
                    for (i = 0; i < jsa.length(); i++) {
                        JSONObject j = (JSONObject)jsa.get(i);
                        POST[i]= j.getString("titolo");
                    queryListaPost post = new queryListaPost (POST[i]);
                   
                System.out.println(post);
                    //System.out.println(POST[i]);
                        //System.out.println("titolo " + j.getString("titolo"));
                    }
                    //System.out.println(POST[1]);
                    for(i=0;i<POST.length;i++){
                        System.out.println(POST[i]);
                    }
                        if(returnJson.getBoolean("success")){
                        return POST;
                    }else{
                           return null;
                    }
                 }catch(Exception e){
                   e.printStackTrace();
                   return null;
                }
        }
        private String convertStreamToString(InputStream is)throws IOException {
                if(is!=null){
                        Writer writer=new CharArrayWriter();
                        char [] buffer=new char[1024];
                        try{
                            Reader reader = new BufferedReader(new InputStreamReader(is,"UTF-8"));
                                    int n;
                                    while ((n = reader.read(buffer)) != -1) {
                                        writer.write(buffer,0,n);
                                      }
                                }
                                finally{
                                        is.close();
                                }
                                return writer.toString();
                }else{
                        return null;
                }
               
        }
}

Sai aiutarmi?