|
Página 1 de 1
|
[ 4 Mensagens ] |
|
[RESOLVIDO] Problema com ProgressDialog no OnCreate
| Autor |
Mensagem |
|
daniloavner
What is AVD?
Data de registro: 27 Mar 2012, 16:55 Mensagens: 19
|
 [RESOLVIDO] Problema com ProgressDialog no OnCreate
Fala pessoal, to com um problema para colocar um ProgressDialog no onCreate da minha Activity. Ao apertar um botão na tela principal e chamada um intent que manda para a tela ListarEstoqueCompra um id de um fornecedor para realizar uma busca em um WebService. No onCreate da ListarEstoqueCompra e chamado um método que consome o WebService e preenche um ListView. O problema e que são aproximadamente 50 mil itens e a tela fica preta, sem aparecer nada (no log mostra que os itens estão sendo carregados e a aplicação esta rodando normalmente). Quando termina o carregamento, o ListView aparece com todos os itens normalmente. O que eu quero é colocar um ProgressDialog assim que a tela aparecer (para que o usuário não tenha a impressão que a aplicação esta travada), e que ele fique rodando enquanto os itens estão sendo carregados. Depois o Progress e cancelado e é exibido a ListView com os itens. public class ListarEstoqueCompra extends Activity { ListView lista; EstoqueCompraAdapter adapter; int idPro, idForn; @Override public void onCreate (Bundle savedInstanceState ) { super. onCreate(savedInstanceState ); setContentView (R. layout. listar_estoque_compra); Intent intent2 = getIntent (); Bundle args = intent2. getExtras(); idForn =args. getInt("id"); final Intent intent = new Intent (this, DetalharProduto. class); try { final ArrayList<Estoque> ec = pesquisaEstoqueCompra (); adapter = new EstoqueCompraAdapter ( ListarEstoqueCompra. this, ec ); lista. setAdapter(adapter ); // Ação do click no List View lista. setOnItemClickListener(new OnItemClickListener () { @Override public void onItemClick (AdapterView<?> l, View v, int position, long id ) { Estoque p = (Estoque ) ec. get(position ); idPro = p. getId(); Bundle parametros = new Bundle (); parametros. putInt("id", idPro ); intent. putExtras(parametros ); startActivity (intent ); } }); } catch (Exception e ) { Log. e("Erro", e. getMessage()); finish (); }} private ArrayList<Estoque> pesquisaEstoqueCompra (){ ArrayList<Estoque> lista = new ArrayList<Estoque> (); SoapObject soap = new SoapObject ("http://service.genpac.com.br/", "ListarEstoqueCompra"); soap. addProperty("id", idForn ); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope (SoapEnvelope. VER11); envelope. setOutputSoapObject(soap ); String url = "http://genpacpb.myvnc.com:8084/ArmovWS/ConsultasARMOV"; HttpTransportSE httpTransport = new HttpTransportSE (url ); try { httpTransport. call("", envelope ); //Recuperar uma lista de objetos SoapObject results = (SoapObject ) envelope. bodyIn; int count = results. getPropertyCount(); for (int i = 0; i < count; i++ ) { Estoque p = new Estoque (); SoapObject obj = (SoapObject ) results. getProperty(i ); SoapPrimitive e = (SoapPrimitive ) obj. getProperty("ID"); SoapPrimitive f = (SoapPrimitive ) obj. getProperty("PRODUTO"); SoapPrimitive g = (SoapPrimitive ) obj. getProperty("QTD"); SoapPrimitive h = (SoapPrimitive ) obj. getProperty("UNITARIO"); SoapPrimitive j = (SoapPrimitive ) obj. getProperty("TOTAL"); p. setId(Integer. parseInt(e. toString())); p. setProduto(f. toString()); p. setQtd(Double. parseDouble(g. toString())); p. setUnitario(Double. parseDouble(h. toString())); p. setTotal(Double. parseDouble(j. toString())); lista. add(p ); } return lista; } catch (Exception e ) { Log. e("Error", e. getMessage()); } return null; } Alguém tem ideia de como eu faço isso??
Editado pela última vez por daniloavner em 04 Set 2012, 16:22, num total de 1 vezes
|
| 30 Ago 2012, 18:52 |
|
 |
|
feliperfranco
What is Android?
Data de registro: 15 Fev 2012, 22:33 Mensagens: 8
|
 Re: Problema com ProgressDialog no OnCreate
Use uma Threed new Thread() { @Override public void run () { ListarEstoqueCompra (); }; }. start(); Na inicio função ListarEstoqueCompra() pbProgressBar.setMax(Numero maximo de itens); Depois do voce faz pbProgressBar.setProgress(pbProgressBar.getProgress() + 1); Espero ter ajudado.
|
| 31 Ago 2012, 19:00 |
|
 |
|
daniloavner
What is AVD?
Data de registro: 27 Mar 2012, 16:55 Mensagens: 19
|
 Re: Problema com ProgressDialog no OnCreate
Assim num dar certo não feliperfranco. O ListarEstoqueCompra() não é uma função, é uma classe (uma activity). E no onCreate dessa classe eu queria colocar um ProgressDialog para que rode até o fim do carregamento dos itens. O método que baixa os itens e coloca no arrayList e o pesquisaEstoqueCompra.
|
| 03 Set 2012, 15:21 |
|
 |
|
daniloavner
What is AVD?
Data de registro: 27 Mar 2012, 16:55 Mensagens: 19
|
 Re: Problema com ProgressDialog no OnCreate
Consegui fazer aqui. Usei Thread como o feliperfranco falou mas so que eu usei o ProgressDialog ao invés do PorgressBar. Eu já estava tentando usar Thread a algum tempo mas sempre dava o erro: Only the original thread that created a view hierarchy can touch its views.Foi ai que eu descobri que estava faltando um Handler para completar a implementação. O código ficou assim: public class ListarEstoqueCompra extends Activity { ListView lista; EstoqueCompraAdapter adapter; int idPro, idForn; @Override public void onCreate (Bundle savedInstanceState ) { super. onCreate(savedInstanceState ); setContentView (R. layout. listar_estoque_compra); Intent intent2 = getIntent (); Bundle args = intent2. getExtras(); idForn =args. getInt("id"); final Intent intent = new Intent (this, DetalharProduto. class); new Thread() { @Override public void run () { try { handler. post(new Runnable() { @Override public void run () { myProgressDialog = ProgressDialog. show(ListarEstoqueCompra. this, "Por favor, aguarde...", "Os itens estão sendo carregados...", true); } }); final ArrayList<Estoque> ec = pesquisaEstoqueCompra (); adapter = new EstoqueCompraAdapter ( ListarEstoqueCompra. this, ec ); handler. post(new Runnable() { @Override public void run () { lista. setAdapter(adapter ); myProgressDialog. dismiss(); } }); // Ação do click no List View lista. setOnItemClickListener(new OnItemClickListener () { @Override public void onItemClick (AdapterView<?> l, View v, int position, long id ) { Estoque p = (Estoque ) ec. get(position ); idPro = p. getId(); Bundle parametros = new Bundle (); parametros. putInt("id", idPro ); intent. putExtras(parametros ); startActivity (intent ); } }); } catch (Exception e ) { Log. e("Erro", e. getMessage()); finish (); } } }. start(); } private ArrayList<Estoque> pesquisaEstoqueCompra (){ ArrayList<Estoque> lista = new ArrayList<Estoque> (); SoapObject soap = new SoapObject ("http://service.genpac.com.br/", "ListarEstoqueCompra"); soap. addProperty("id", idForn ); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope (SoapEnvelope. VER11); envelope. setOutputSoapObject(soap ); String url = "http://genpacpb.myvnc.com:8084/ArmovWS/ConsultasARMOV"; HttpTransportSE httpTransport = new HttpTransportSE (url ); try { httpTransport. call("", envelope ); //Recuperar uma lista de objetos SoapObject results = (SoapObject ) envelope. bodyIn; int count = results. getPropertyCount(); for (int i = 0; i < count; i++ ) { Estoque p = new Estoque (); SoapObject obj = (SoapObject ) results. getProperty(i ); SoapPrimitive e = (SoapPrimitive ) obj. getProperty("ID"); SoapPrimitive f = (SoapPrimitive ) obj. getProperty("PRODUTO"); SoapPrimitive g = (SoapPrimitive ) obj. getProperty("QTD"); SoapPrimitive h = (SoapPrimitive ) obj. getProperty("UNITARIO"); SoapPrimitive j = (SoapPrimitive ) obj. getProperty("TOTAL"); p. setId(Integer. parseInt(e. toString())); p. setProduto(f. toString()); p. setQtd(Double. parseDouble(g. toString())); p. setUnitario(Double. parseDouble(h. toString())); p. setTotal(Double. parseDouble(j. toString())); lista. add(p ); } return lista; } catch (Exception e ) { Log. e("Error", e. getMessage()); } return null; }
|
| 04 Set 2012, 16:21 |
|
|
|
Página 1 de 1
|
[ 4 Mensagens ] |
|
Quem está online |
Usuários vendo este fórum: adautox, alexandrepom, Alexandrercarvalho, alexandreufcg, alexcost2002, alylson, andreluzz, Aniquiler, Antonio Carlos, ariostorecco, arkanjo, arquivo51, attomweb, b7web, Bass, Berbert, berchielli, bernardodauer, bigr ecreio, cavenaghi, Christiane, cleber, Cleiton, Corneta, Crazy_Droid, Daniel Batista, Danilo Dias, Darth Plagueis, Darth Vader, fabric01, Faroli, fernando neves, fernandodotnet, flashking, fracon, frankmendes, fredjpa, FVB, Gabriel Laet, geco, genildof, Governador Wilhuff Tarkin, GuilhermeZampieri, gusrp, helder84, henrique.garcia, hopper.frf, ice, infonlinebr, italoraony, j-menezes, Jaison, jandersonjc, JAndroid, Jango Fett, JeffCF, julianofischer, juliherms, Juninhooooo, jzaires, klebersilvarocha, lazarodm, leofernandesmo, leonardodamata, lfirpo, lucastgomes, luiz.lago, Machado000, marcosandreao, marcow, mendes_lu, navegador, neosun, nglaubervasc, Nice, nirvana, nivaldo, obitow, onaiggac, paint-horse, pamonteiro, pedro, pgbatera, Philipe Alves, pmzara, polonia, Rainha Amidala/Padmé, rcotonet, regisjj, renatocoliveira, renegheller, ricardzanella, Rickxdx, Robson Florentino, Rodrigo, ROGÉRIO RODRIGUES, Romulo, rotilho, samuel.cavanieri, Samuka, scattonevi, SEO Crawler, siker C3PO, snonca, suissa, tavares767, Telekom [Bot], Thelemita, thienne, tirloni, tnarnold, Topeca, Transtago, tricx16, vilmartr, viniciusgoncalves, waideman, weverton, xGambit, yeltsinlima, yuri82, Zam Wesell, zorba e 1 visitante |
|
Você não pode criar novos tópicos neste fórum Você não pode responder tópicos neste fórum Você não pode editar suas mensagens neste fórum Você não pode excluir suas mensagens neste fórum Você não pode enviar anexos neste fórum
|
|