Autore Topic: Parsign XML + progressbar  (Letto 432 volte)

Offline Ale

  • Nuovo arrivato
  • *
  • Post: 23
  • Respect: 0
    • Mostra profilo
Parsign XML + progressbar
« il: 24 Settembre 2013, 10:31:43 CEST »
0
Salve Devs, sto lavorando ad una applicazione che legge un file xml in locale. Tutto ok, però ho un problema.... Se il file è abbastanza grande, l'app fatica ad avviarsi e mostra per un certo tempo la sola pagina bianca anonima. Avrei quindi bisogno di una progressbar o di splashscreen che precarica l'activity. Ho provato con AsyncTask e handler e letto:

Common Tasks and How to Do Them in Android | Android Developers

Keeping Your App Responsive | Android Developers

, ma non ho risolto!  NEED AN HELP!


Codice (Java): [Seleziona]
public class MainActivity extends Activity {
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        parseXML();
    }
 
   
    private void parseXML() {
        AssetManager assetManager = getBaseContext().getAssets();
        try {
            InputStream is = assetManager.open("order.xml");
            SAXParserFactory spf = SAXParserFactory.newInstance();
   SAXParser sp = spf.newSAXParser();
   XMLReader xr = sp.getXMLReader();
 
   OrderXMLHandler myXMLHandler = new OrderXMLHandler();
   xr.setContentHandler(myXMLHandler);
   InputSource inStream = new InputSource(is);
   xr.parse(inStream);
   
   LinearLayout ll = (LinearLayout)findViewById(R.id.linearLayout);
   TextView tv = new TextView(this);
         
   ArrayList<ProductInfo> cartList = myXMLHandler.getCartList();
   for(ProductInfo productInfo: cartList){
    tv = new TextView(this);
          tv.setText("Line No : " + productInfo.getSeqNo());
          ll.addView(tv);
          tv = new TextView(this);
          tv.setText("Item No : " + productInfo.getItemNumber());
          ll.addView(tv);
          tv = new TextView(this);
          tv.setText("Quantity : " + productInfo.getQuantity());
          ll.addView(tv);
          tv = new TextView(this);
          tv.setText("Price : " + productInfo.getPrice());
          ll.addView(tv);
          tv = new TextView(this);
          tv.setText("---");
          ll.addView(tv);
   }
   
            is.close();
             
        } catch (Exception e) {
            e.printStackTrace();
        }
       
 
    }
 
 
}
« Ultima modifica: 24 Settembre 2013, 10:54:19 CEST da Ale »

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Parsign XML + progressbar
« Risposta #1 il: 24 Settembre 2013, 10:42:26 CEST »
0
L'esempio che hai riportato non mi sembra che usi AsyncTask, anzi esegue tutto nella OnCreate.

Un esempio molto didattico e relativamente vecchio di come impostare il tutto con AsyncTask può essere questo (togliendo la parte della rete se non ti serve):
[facile] HttpBookSearch: AsyncTask, HttpClient, XML parsing, ProgressDialog - Android Developers Italia
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Ale

  • Nuovo arrivato
  • *
  • Post: 23
  • Respect: 0
    • Mostra profilo
Re:Parsign XML + progressbar
« Risposta #2 il: 24 Settembre 2013, 10:49:50 CEST »
0
Esegue tutto all'avvio. Infatti, ho provato ma non ci sono riuscito e sono tornato sui miei passi... Grazie per la risposta, proverò a rimetterci le mani...
« Ultima modifica: 24 Settembre 2013, 10:51:48 CEST da Ale »

Offline Ale

  • Nuovo arrivato
  • *
  • Post: 23
  • Respect: 0
    • Mostra profilo
Re:Parsign XML + progressbar
« Risposta #3 il: 28 Settembre 2013, 16:57:10 CEST »
0
Successo, grazie!
« Ultima modifica: 28 Ottobre 2013, 20:19:39 CET da Ale »