Autore Topic: Visualizzare listview dopo asyncTask  (Letto 595 volte)

Offline Dario93

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC One S
  • Sistema operativo:
    Windows 7
Visualizzare listview dopo asyncTask
« il: 15 Febbraio 2013, 16:06:37 CET »
0
SDK progetto: 17.
SDK dipositivo: 15.

Non so come far visualizzare la listview dopo l'asyncTask. Perchè se lo facessi nella activity non verrebbero visualizzati tutte le modifiche fatte nel thread "ParsingJson".
La listView dovrebbe essere visualizzata tramite il cursore "c".

Codice (Java): [Seleziona]
public class ListViewActivity extends Activity{

        AsyncTask<JSONObject, Void, Void> parsingJson;
        ListView listView;
        Database db;
        Cursor c=null;
       
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.listview_cat);
                db = new Database(this);
               
                listView = (ListView) findViewById(R.id.listview);
               
                Intent intent = getIntent();
                String qrcode = intent.getStringExtra("qrcode");
                AsyncTask<String, Void, JSONObject> download = new DownloadDatiOnline().execute(qrcode, "it");   
                try {
                        parsingJson = new  ParsingJson(this).execute(download.get());
                } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                } catch (ExecutionException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
               

                db.open();
                c=db.getCategorie();
                //.............?
               
        }

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Visualizzare listview dopo asyncTask
« Risposta #1 il: 15 Febbraio 2013, 17:42:06 CET »
0
ci sono dei tutorial a riguardo!
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline Dario93

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC One S
  • Sistema operativo:
    Windows 7
Re:Visualizzare listview dopo asyncTask
« Risposta #2 il: 16 Febbraio 2013, 01:33:42 CET »
0
Ho letto talmente tanti tutorial che ormai ho fatto troppa confusione.

Ho provato così ma non viene visualizzato nulla anche se nel cursore ci sono ben 10 righe.
Il logcat non restituisce nessun errore.
Poi ho utilizzato molti metodi deprecati per le versioni che sto utilizzando io.

Vi prego aiutatemi perchè è da più di 3 giorni che ci sto dietro e non so come andare avanti.



Codice (Java): [Seleziona]
public class ListViewActivity extends Activity{

        AsyncTask<JSONObject, Void, Void> parsingJson;
        ListView listView;
        Database db;
        Cursor c;
        SimpleCursorAdapter adapter;
       
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.listview_cat);
               
               
                listView = (ListView) findViewById(R.id.list);
               
                Intent intent = getIntent();
                String qrcode = intent.getStringExtra("qrcode");
                AsyncTask<String, Void, JSONObject> download = new DownloadDatiOnline().execute(qrcode, "it");   
                try {
                        parsingJson = new  ParsingJson(this).execute(download.get());
                } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                } catch (ExecutionException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
               
                db = new Database(this);
                db.open();
                c=db.getCategorie();
               
                startManagingCursor(c);
                adapter = new SimpleCursorAdapter(this, R.layout.listview_cat, c, new String[] {TableDB.COLUMN_NAME_NOME}, new int[] {R.id.title});
                listView.setAdapter(adapter);
                db.close();
               
                new DrawListView().execute();
        }
       
       
        class DrawListView extends AsyncTask<Void, Void, Void>{                
                @Override
                protected Void doInBackground(Void... params) {
                        while(parsingJson.getStatus()==AsyncTask.Status.RUNNING){
                        }
                        return null;
                }

                @Override
                protected void onPostExecute(Void result) {
                        updateListView();
                       
                }
               
               
        }
       
        private void updateListView() {
                db.open();
                c = db.getCategorie(); // query
                startManagingCursor(c);
                adapter.changeCursor(c);
                adapter.notifyDataSetChanged();
                db.close();
               
        }
       
}

}


Questo è listview_cat.xml
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:orientation="vertical">
 
    <ListView
       android:id="@+id/list"
       android:layout_width="fill_parent"
                android:layout_height="wrap_content">
    </ListView>
</LinearLayout>


Questo è il list_item.xml
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="vertical" >
   
                <!-- List item name -->
        <TextView
           android:id="@+id/title"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:padding="10dip"
           android:textSize="16sp">
        </TextView>
</LinearLayout>

Offline GabMarioPower

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 606
  • Respect: +152
    • Github
    • Google+
    • gabrielemariotti
    • GabMarioPower
    • Mostra profilo
  • Play Store ID:
    GAB+MARIO+DEV
  • Sistema operativo:
    Ubuntu 14.04 , Win 10
Re:Visualizzare listview dopo asyncTask
« Risposta #3 il: 16 Febbraio 2013, 10:49:10 CET »
0