Ver mensagens sem resposta | Ver tópicos ativos Hoje é 19 Jun 2013, 03:27



Este tópico está trancado, você não pode editar mensagens ou enviar respostas.  [ 4 Mensagens ] 
 [RESOLVIDO] Problema com ProgressDialog no OnCreate 
Autor Mensagem
What is AVD?
What is AVD?

Data de registro: 27 Mar 2012, 16:55
Mensagens: 19
Mensagem [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
Perfil
What is Android?
What is Android?

Data de registro: 15 Fev 2012, 22:33
Mensagens: 8
Mensagem 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
lista.add(p)
voce faz
pbProgressBar.setProgress(pbProgressBar.getProgress() + 1);


Espero ter ajudado.


31 Ago 2012, 19:00
Perfil WWW
What is AVD?
What is AVD?

Data de registro: 27 Mar 2012, 16:55
Mensagens: 19
Mensagem 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
Perfil
What is AVD?
What is AVD?

Data de registro: 27 Mar 2012, 16:55
Mensagens: 19
Mensagem 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
Perfil
Mostrar mensagens anteriores:  Organizar por  
Este tópico está trancado, você não pode editar mensagens ou enviar respostas.   [ 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

Procurar por:

© 2007 - 2013 Portal Android - Comunidade de Desenvolvedores da Plataforma Android

Estamos no Linkedin    Siga-nos no twitter


Powered by phpBB - Hospedado por Bemobi