Autore Topic: Click su ListView  (Letto 648 volte)

Offline Pacobillo

  • Nuovo arrivato
  • *
  • Post: 24
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus one
  • Sistema operativo:
    Windows 7
Click su ListView
« il: 13 Settembre 2013, 18:52:47 CEST »
0
Ciao, ho implementato una ListView che visualizza dei dati prelevati da un file xml, e fin qui tutto bene.
Poi volevo gestire il click per passare i dati ad un'altra activity, ma qui nasce il problema.
Ho implementato questo codice:

Codice (Java): [Seleziona]
package com.tdgpisa;

import java.util.ArrayList;
import java.util.HashMap;

import com.tdgpisa.utility.ParserNews;
import com.tdgpisa.utility.SingolaNews;

import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ListView;
import android.widget.SimpleAdapter;

public class News extends ListActivity {
           
 
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.news);
        String UrlNews="http://www.pisacon.it/Documenti/NEWS.xml";
        ParserNews AnalizzaNews=new ParserNews();
        AnalizzaNews.SpacchettaXML(UrlNews);
        ArrayList<SingolaNews> RisultatoXML = AnalizzaNews.PrendiNewsSpacchettate();
       
        ArrayList<HashMap<String, String>> DatiHash=new ArrayList<HashMap<String,String>>();
       
        for(int i=0;i<RisultatoXML.size();i++){
                SingolaNews News =RisultatoXML.get(i);
               
                HashMap<String,String> NewsMap=new HashMap<String, String>();
               
                NewsMap.put("DATA", News.getData());
                NewsMap.put("TITOLO", News.getTitolo());
                NewsMap.put("TESTO", News.getTesto());
                DatiHash.add(NewsMap);
        }
       
       
        String[] from={"DATA","TITOLO","TESTO"};
        int[] to={R.id.data,R.id.titolo,R.id.testo};
       
        SimpleAdapter adapter=new SimpleAdapter(getApplicationContext(),DatiHash,R.layout.riganews,from,to);
       
                ListView lNews = getListView();
        lNews.setAdapter(adapter);
       
                lNews.setOnItemClickListener(clikListaNews);   
               
    }  
   
    OnItemClickListener clikListaNews = new OnItemClickListener()
           {

                @Override
                public void onItemClick(AdapterView<?> listView, View arg1, int position,long arg3) {
                       
                        Log.d("error",(String) listView.getItemAtPosition(position));
                         
                        Intent iNotizia = new Intent(News.this, Notizia.class);
                 
                        Log.d("error","pre");
                       
                        SingolaNews DATA = (SingolaNews) listView.getItemAtPosition(position);
                       
                        Log.d("error",(String) listView.getItemAtPosition(position));
                        Log.d("error",(String) DATA.getData());
                        Log.d("error",(String) DATA.getTitolo());
                        Log.d("error",(String) DATA.getTesto());
                       
                        iNotizia.putExtra("data", DATA.getData());
                        iNotizia.putExtra("titolo", DATA.getTitolo());
                        iNotizia.putExtra("testo", DATA.getTesto());
         
                        startActivity(iNotizia);
                       
                }
           };
}

E la classe SingolaNews è questa:

Codice (Java): [Seleziona]
package com.tdgpisa.utility;

public class SingolaNews {
    private String DATA;
    private String TITOLO;
    private String TESTO;

   
    public String getData() {
            return DATA;
    }

    public void setData(String data) {
            this.DATA = data;
    }

    public String getTitolo() {
            return TITOLO;
    }

    public void setTitolo(String titolo) {
            this.TITOLO = titolo;
    }

    public String getTesto() {
            return TESTO;
    }

    public void setTesto(String testo) {
            this.TESTO = testo;
    }
}

Ma al click ottengo sempre questo errore:
Codice: [Seleziona]
09-13 16:45:01.943: D/dalvikvm(331): GC_EXTERNAL_ALLOC freed 64K, 52% free 2596K/5379K, external 1017K/1038K, paused 78ms
09-13 16:45:04.483: D/AndroidRuntime(331): Shutting down VM
09-13 16:45:04.483: W/dalvikvm(331): threadid=1: thread exiting with uncaught exception (group=0x40015560)
09-13 16:45:04.503: E/AndroidRuntime(331): FATAL EXCEPTION: main
09-13 16:45:04.503: E/AndroidRuntime(331): java.lang.ClassCastException: java.util.HashMap
09-13 16:45:04.503: E/AndroidRuntime(331):         at com.tdgpisa.News$1.onItemClick(News.java:64)
09-13 16:45:04.503: E/AndroidRuntime(331):         at android.widget.AdapterView.performItemClick(AdapterView.java:284)
09-13 16:45:04.503: E/AndroidRuntime(331):         at android.widget.ListView.performItemClick(ListView.java:3513)
09-13 16:45:04.503: E/AndroidRuntime(331):         at android.widget.AbsListView$PerformClick.run(AbsListView.java:1812)
09-13 16:45:04.503: E/AndroidRuntime(331):         at android.os.Handler.handleCallback(Handler.java:587)
09-13 16:45:04.503: E/AndroidRuntime(331):         at android.os.Handler.dispatchMessage(Handler.java:92)
09-13 16:45:04.503: E/AndroidRuntime(331):         at android.os.Looper.loop(Looper.java:123)
09-13 16:45:04.503: E/AndroidRuntime(331):         at android.app.ActivityThread.main(ActivityThread.java:3683)
09-13 16:45:04.503: E/AndroidRuntime(331):         at java.lang.reflect.Method.invokeNative(Native Method)
09-13 16:45:04.503: E/AndroidRuntime(331):         at java.lang.reflect.Method.invoke(Method.java:507)
09-13 16:45:04.503: E/AndroidRuntime(331):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
09-13 16:45:04.503: E/AndroidRuntime(331):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
09-13 16:45:04.503: E/AndroidRuntime(331):         at dalvik.system.NativeStart.main(Native Method)
09-13 16:50:04.548: I/Process(331): Sending signal. PID: 331 SIG: 9

Qualcuno sa indirizzarmi?
Sicuramente sarà una cavolata dovuta alla mia scarsa esperienza, ma non riesco a capire...
Grazie!!!
Roberto

Offline matttt

Re:Click su ListView
« Risposta #1 il: 13 Settembre 2013, 19:09:19 CEST »
+2
Hai costruito un ListView con un SimpleAdapter che usa HashMap, quindi se usi getItemAtPosition ottieni un HashMap non una stringa.
Si lamenta perchè stai cercando di convertirlo in stringa...
Le mie apps su Google Play Store:

Offline GabMarioPower

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 606
  • Respect: +153
    • Github
    • Google+
    • gabrielemariotti
    • GabMarioPower
    • Mostra profilo
  • Play Store ID:
    GAB+MARIO+DEV
  • Sistema operativo:
    Ubuntu 14.04 , Win 10
Re:Click su ListView
« Risposta #2 il: 13 Settembre 2013, 20:01:00 CEST »
+1
Tu dai in pasto all'Adapter questo ArrayList.

Codice (Java): [Seleziona]
 ArrayList<HashMap<String, String>> DatiHash=new ArrayList<HashMap<String,String>>();
Quindi il singolo elemento è un HashMap<String,String>.

Ti vorrei far notare due cose:
- tu avevi già un ArrayList<SingolaNotizia>, che potevi tranquillamente usare (facendoti un tuo adapter).
- stai facendo una lettura su internet di un file e parser successivo nel Main Thread UI.  Dove lo stai testando?
Da Android 3.0+ riceverai una NetworkOnMainThreadException.


Già che ci siamo:
- i metodi in java si scrivono con la lettera minuscola
- le singole istanze si scrivono con la lettera minuscola
- fare un casting dove hai già dichiarato il tipo (come il tuo esempio dell'HashMap<String,String>) non serve.

Offline Pacobillo

  • Nuovo arrivato
  • *
  • Post: 24
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus one
  • Sistema operativo:
    Windows 7
Re:Click su ListView
« Risposta #3 il: 13 Settembre 2013, 20:30:56 CEST »
0
Allora, come prima cosa...grazie!!!!!!
Usando l'hash ho risolto, per l'esattezza con questo codice:

Codice (Java): [Seleziona]
        HashMap<String,String> DATA = (HashMap<String,String>) listView.getItemAtPosition(position);
                        iNotizia.putExtra("data", DATA.get("DATA"));
                        iNotizia.putExtra("titolo", DATA.get("TITOLO"));
                        iNotizia.putExtra("testo", DATA.get("TESTO"));

Detto questo, vi chiedo scusa per le porcherie che vi ho fatto leggere, ma ho iniziato a programmare in android e in java da 5 giorni e le informazioni mi stanno tracimando.. :)
Quindi vi chiedo scusa se vi pongo domande per voi banali, ma non tutto mi è chiaro..
Se per i miei dubbi esiste già un link a qualche risorsa, indicatemela pure, che io me la leggo e non vi faccio patire con le cavolate..  ;-)
Nel dettaglio:

- tu avevi già un ArrayList<SingolaNotizia>, che potevi tranquillamente usare (facendoti un tuo adapter).
Cioè? Potresti darmi un'idea di cosa avrei potuto fare?

- stai facendo una lettura su internet di un file e parser successivo nel Main Thread UI.  Dove lo stai testando?
Da Android 3.0+ riceverai una NetworkOnMainThreadException.
Lo sto testando su Android 2.3.3
Perchè avrò problemi su dispositivi più aggiornati?
E' sconsigliata come pratica?
Come posso ovviare al problema?
Grazie...

- i metodi in java si scrivono con la lettera minuscola
- le singole istanze si scrivono con la lettera minuscola
Perfetto, da ora in poi seguirò questa prassi!

- fare un casting dove hai già dichiarato il tipo (come il tuo esempio dell'HashMap<String,String>) non serve.
Qui non ho capito dove l'ho fatto...mi sapresti indicare il punto preciso così evito di scriverlo le prossime volte?

Grazie ancora a tutti!!!

Offline GabMarioPower

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 606
  • Respect: +153
    • Github
    • Google+
    • gabrielemariotti
    • GabMarioPower
    • Mostra profilo
  • Play Store ID:
    GAB+MARIO+DEV
  • Sistema operativo:
    Ubuntu 14.04 , Win 10
Re:Click su ListView
« Risposta #4 il: 14 Settembre 2013, 08:25:15 CEST »
+1

Allora, come prima cosa...grazie!!!!!!
Nel dettaglio:
- tu avevi già un ArrayList<SingolaNotizia>, che potevi tranquillamente usare (facendoti un tuo adapter).
Cioè? Potresti darmi un'idea di cosa avrei potuto fare?
Qui trovi un esempio.
[medio] ListView con layout personalizzato tramite un custom ArrayAdapter - Android Developers Italia

- stai facendo una lettura su internet di un file e parser successivo nel Main Thread UI.  Dove lo stai testando?
Da Android 3.0+ riceverai una NetworkOnMainThreadException.

Cioè? Potresti darmi un'idea di cosa avrei potuto fare?
Lo sto testando su Android 2.3.3
Perchè avrò problemi su dispositivi più aggiornati?
E' sconsigliata come pratica?
Come posso ovviare al problema?

L'esecuzione di una chiamata internet e il parser successivo che esegui sono operazione potenzialmente lunghe.
Lanciandole nel onCreate(), lo puoi vedere tu stesso nel debug, vengono eseguite nel Thread principale UI.
In altre parole, il disegno della videata è bloccato fino a che non viene terminata l'esecuzione del codice. Se dura troppi secondi il sistema operativo ti chiude l'app da solo.

Prima di Android 3.0, questa operazione era permessa, ma non significa che andava bene.
Da Android 3.0, questa operazione non è più permessa e avrai l'eccezione NetworkOnMainThreadException..

Per ovviare al problema, devi usare qualcosa che venga eseguito in un secondo Thread, un AsyncTask o un Service.
[/quote]

Offline Pacobillo

  • Nuovo arrivato
  • *
  • Post: 24
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus one
  • Sistema operativo:
    Windows 7
Re:Click su ListView
« Risposta #5 il: 16 Settembre 2013, 17:15:42 CEST »
0
L'esecuzione di una chiamata internet e il parser successivo che esegui sono operazione potenzialmente lunghe.
Lanciandole nel onCreate(), lo puoi vedere tu stesso nel debug, vengono eseguite nel Thread principale UI.
In altre parole, il disegno della videata è bloccato fino a che non viene terminata l'esecuzione del codice. Se dura troppi secondi il sistema operativo ti chiude l'app da solo.

Prima di Android 3.0, questa operazione era permessa, ma non significa che andava bene.
Da Android 3.0, questa operazione non è più permessa e avrai l'eccezione NetworkOnMainThreadException..

Per ovviare al problema, devi usare qualcosa che venga eseguito in un secondo Thread, un AsyncTask o un Service.

Ciao, Ho studiato un pò gli AsyncTask ed ho modificato il codice in questo modo:

Codice (Java): [Seleziona]
package com.tdgpisa;

import java.util.ArrayList;
import java.util.HashMap;

import com.tdgpisa.utility.ParserNews;
import com.tdgpisa.utility.SingolaNews;

import android.app.ListActivity;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.SimpleAdapter;

public class News extends ListActivity {
           
 
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.news);
       
       String UrlNews="http://www.pisacon.it/Documenti/NEWS.xml";
       asincrona myasincrona = new asincrona();
       myasincrona.execute(UrlNews,null);
   
    }  
   
    OnItemClickListener clikListaNews = new OnItemClickListener()
           {

                @Override
                public void onItemClick(AdapterView<?> listView, View arg1, int position,long arg3) {
                       
                        Intent iNotizia = new Intent(News.this, Notizia.class);
                                               
                        HashMap<String,String> DATA = (HashMap<String, String>) listView.getItemAtPosition(position);

                        iNotizia.putExtra("data", DATA.get("DATA"));
                        iNotizia.putExtra("titolo", DATA.get("TITOLO"));
                        iNotizia.putExtra("testo", DATA.get("TESTO"));
         
                        startActivity(iNotizia);
                       
                }
           };
           
           private class asincrona extends AsyncTask<String,Void,Void>{
                   
                ArrayList<HashMap<String, String>> DatiHash;

                @Override
                protected Void doInBackground(String... params) {
                ParserNews AnalizzaNews=new ParserNews();
                AnalizzaNews.SpacchettaXML(params[0]);
                ArrayList<SingolaNews> RisultatoXML = AnalizzaNews.getNewsSpacchettate();
               
                DatiHash=new ArrayList<HashMap<String,String>>();

                for(int i=0;i<RisultatoXML.size();i++){
                        SingolaNews News =RisultatoXML.get(i);
                       
                        HashMap<String,String> NewsMap=new HashMap<String, String>();
                       
                        NewsMap.put("DATA", News.getData());
                        NewsMap.put("TITOLO", News.getTitolo());
                        NewsMap.put("TESTO", News.getTesto());
                        DatiHash.add(NewsMap);
                        }
                        return null;        
                        }
               
                @Override
                protected void onPostExecute(Void result){
                       
               
                String[] from={"DATA","TITOLO","TESTO"};
                int[] to={R.id.data,R.id.titolo,R.id.testo};
                       
                SimpleAdapter adapter=new SimpleAdapter(getApplicationContext(),DatiHash,R.layout.riganews,from,to);
               
                        ListView lNews = getListView();
                lNews.setAdapter(adapter);
               
                        lNews.setOnItemClickListener(clikListaNews);
                        return;
                }

           }  
}

ma se lo provo su un dispositivo 3.2 ottengo questo errore:

Codice: [Seleziona]
09-16 15:00:01.014: E/AndroidRuntime(385): FATAL EXCEPTION: main
09-16 15:00:01.014: E/AndroidRuntime(385): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.tdgpisa/com.tdgpisa.News}: android.view.InflateException: Binary XML file line #9: Error inflating class <unknown>
09-16 15:00:01.014: E/AndroidRuntime(385):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1815)
09-16 15:00:01.014: E/AndroidRuntime(385):         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1831)
09-16 15:00:01.014: E/AndroidRuntime(385):         at android.app.ActivityThread.access$500(ActivityThread.java:122)
09-16 15:00:01.014: E/AndroidRuntime(385):         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1024)
09-16 15:00:01.014: E/AndroidRuntime(385):         at android.os.Handler.dispatchMessage(Handler.java:99)
09-16 15:00:01.014: E/AndroidRuntime(385):         at android.os.Looper.loop(Looper.java:132)
09-16 15:00:01.014: E/AndroidRuntime(385):         at android.app.ActivityThread.main(ActivityThread.java:4123)
09-16 15:00:01.014: E/AndroidRuntime(385):         at java.lang.reflect.Method.invokeNative(Native Method)
09-16 15:00:01.014: E/AndroidRuntime(385):         at java.lang.reflect.Method.invoke(Method.java:491)
09-16 15:00:01.014: E/AndroidRuntime(385):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
09-16 15:00:01.014: E/AndroidRuntime(385):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
09-16 15:00:01.014: E/AndroidRuntime(385):         at dalvik.system.NativeStart.main(Native Method)
09-16 15:00:01.014: E/AndroidRuntime(385): Caused by: android.view.InflateException: Binary XML file line #9: Error inflating class <unknown>
09-16 15:00:01.014: E/AndroidRuntime(385):         at android.view.LayoutInflater.createView(LayoutInflater.java:596)
09-16 15:00:01.014: E/AndroidRuntime(385):         at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
09-16 15:00:01.014: E/AndroidRuntime(385):         at android.view.LayoutInflater.onCreateView(LayoutInflater.java:644)
09-16 15:00:01.014: E/AndroidRuntime(385):         at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:669)
09-16 15:00:01.014: E/AndroidRuntime(385):         at android.view.LayoutInflater.rInflate(LayoutInflater.java:724)
09-16 15:00:01.014: E/AndroidRuntime(385):         at android.view.LayoutInflater.inflate(LayoutInflater.java:479)
09-16 15:00:01.014: E/AndroidRuntime(385):         at android.view.LayoutInflater.inflate(LayoutInflater.java:391)
09-16 15:00:01.014: E/AndroidRuntime(385):         at android.view.LayoutInflater.inflate(LayoutInflater.java:347)
09-16 15:00:01.014: E/AndroidRuntime(385):         at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:223)
09-16 15:00:01.014: E/AndroidRuntime(385):         at android.app.Activity.setContentView(Activity.java:1786)
09-16 15:00:01.014: E/AndroidRuntime(385):         at com.tdgpisa.News.onCreate(News.java:24)
09-16 15:00:01.014: E/AndroidRuntime(385):         at android.app.Activity.performCreate(Activity.java:4397)
09-16 15:00:01.014: E/AndroidRuntime(385):         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048)
09-16 15:00:01.014: E/AndroidRuntime(385):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1779)
09-16 15:00:01.014: E/AndroidRuntime(385):         ... 11 more
09-16 15:00:01.014: E/AndroidRuntime(385): Caused by: java.lang.reflect.InvocationTargetException
09-16 15:00:01.014: E/AndroidRuntime(385):         at java.lang.reflect.Constructor.constructNative(Native Method)
09-16 15:00:01.014: E/AndroidRuntime(385):         at java.lang.reflect.Constructor.newInstance(Constructor.java:416)
09-16 15:00:01.014: E/AndroidRuntime(385):         at android.view.LayoutInflater.createView(LayoutInflater.java:576)
09-16 15:00:01.014: E/AndroidRuntime(385):         ... 24 more
09-16 15:00:01.014: E/AndroidRuntime(385): Caused by: android.content.res.Resources$NotFoundException: File  from drawable resource ID #0x102000a
09-16 15:00:01.014: E/AndroidRuntime(385):         at android.content.res.Resources.loadDrawable(Resources.java:1923)
09-16 15:00:01.014: E/AndroidRuntime(385):         at android.content.res.TypedArray.getDrawable(TypedArray.java:601)
09-16 15:00:01.014: E/AndroidRuntime(385):         at android.widget.ListView.<init>(ListView.java:165)
09-16 15:00:01.014: E/AndroidRuntime(385):         at android.widget.ListView.<init>(ListView.java:137)
09-16 15:00:01.014: E/AndroidRuntime(385):         ... 27 more
09-16 15:00:01.014: E/AndroidRuntime(385): Caused by: java.io.FileNotFoundException:
09-16 15:00:01.014: E/AndroidRuntime(385):         at android.content.res.AssetManager.openNonAssetNative(Native Method)
09-16 15:00:01.014: E/AndroidRuntime(385):         at android.content.res.AssetManager.openNonAsset(AssetManager.java:407)
09-16 15:00:01.014: E/AndroidRuntime(385):         at android.content.res.Resources.loadDrawable(Resources.java:1915)
09-16 15:00:01.014: E/AndroidRuntime(385):         ... 30 more

in cosa sto sbagliando?
L'Async mi sembra giusto se ho capito bene come funziona...
Grazie dell'aiuto...

Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
Re:Click su ListView
« Risposta #6 il: 16 Settembre 2013, 17:27:40 CEST »
+1
L'asyncTask è corretto, il problema che stai avendo ora è di natura diversa e l'hai a riga 24:

Codice (Java): [Seleziona]
setContentView(R.layout.news);
Nel tuo layout news.xml fai riferimento a qualcosa che non c'è (ad occhio dallo stack sembra un drawable assente a riga 9).
Controlla il layout che sia tutto corretto.

Offline Pacobillo

  • Nuovo arrivato
  • *
  • Post: 24
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus one
  • Sistema operativo:
    Windows 7
Re:Click su ListView
« Risposta #7 il: 16 Settembre 2013, 17:39:19 CEST »
0
Ma il layout di news.xml è veramente all'osso..

Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@color/Arancione">

        <ListView
            android:id="@android:id/list"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:overScrollFooter="@android:id/list" >

        </ListView>
</LinearLayout>

Giusto una ListView....

Post unito: 17 Settembre 2013, 13:21:41 CEST
Ho risolto, il problema era questa riga:

Codice (XML): [Seleziona]
android:overScrollFooter="@android:id/list"
Finita non so come nel mio XML.

Grazie a tutti voi per l'aiuto, mi state dando una grande mano.
« Ultima modifica: 17 Settembre 2013, 13:21:42 CEST da Pacobillo, Reason: Merged DoublePost »