Tecnologia do Blogger.
RSS

Re: [androidbrasil-dev] Problema com AsyncTask, minha lista não aparece

li sim

mais consegui amigo valewww mesmo pela ajuda

Em 26 de setembro de 2012 11:42, Jonas Alves <jonasfa@gmail.com> escreveu:

Você leu a documentação da AsyncTask?

On Sep 26, 2012 11:35 AM, "Felippe dos Santos Ferreira" <felippenasuacasa@gmail.com> wrote:
Poxa Lucas e Jonas tou ficando loco aqui..
não aparece lista nehum... nem toast...
nem alert



ai dentro do oncreate eu chamo assim:

MinhaListaInicial list = new MinhaListaInicial(this);
list.execute();

MinhaListaInicial list = new MinhaListaInicial(null);
list.execute();

como devo chmar...
nossa muito foda esse negocio de AsyncTask


Em 26 de setembro de 2012 09:25, Lucas de Jesus Matias <lucas.matias.87@gmail.com> escreveu:
até entendo essa utilização o que me confundia é o MinhaClasse.this, pois até hoje todo acesso que eu conhecia que fazia uso do nome da classe em maiúsculo sem instância é uma forma estática de acesso. Então o que me deixou na dúvida é que, pensei que era estático, e por ser estático não pertencia a nenhuma instância definida e portanto talvez pudesse dar erro por ser uma thread. 

Já utilizei na criação de Listeners dentro da própria classe, mas fiquei na dúvida por ser uma thread diferente da principal, não entendo muito das exceções das threads. 

Em 26 de setembro de 2012 09:13, Jonas Alves <jonasfa@gmail.com> escreveu:

Esta forma de utilização se chama "inner class". Se ainda não conhecer, estuda de sobre ela. É bem útil.

On Sep 26, 2012 9:05 AM, "Lucas de Jesus Matias" <lucas.matias.87@gmail.com> wrote:
Bem, deixei claro que não tinha certeza sobre isso, estou usando a Task de fora da classe, então eu não conseguiria utilizar dessa forma. 

Nunca entendi bem essa forma de utilização, só estou tentando ajudar, só estou mostrando a forma que utilizei e deu certo. 

Em 26 de setembro de 2012 09:02, Jonas Alves <jonasfa@gmail.com> escreveu:

Completando, Classe.this não é e não tem nada a ver com propriedades estáticas.

On Sep 26, 2012 8:49 AM, "Jonas Alves" <jonasfa@gmail.com> wrote:

Você não tem idéia do que está falando.
Classe.this é uma forma de acessar a outer class, e não tem nada de errado em usar ela.

On Sep 26, 2012 7:10 AM, "Lucas de Jesus Matias" <lucas.matias.87@gmail.com> wrote:
Felippe, falta o construtor com a activity ficaria algo assim:
Em negrito o que tem que ser alterado, em vermelho removido:

public class MinhaListaInicial extends AsyncTask<String, Void, String> {
(remover variáveis)
private String resposta = null;
private boolean respostaOk = true;
private Activity activity;

public MinhaListaInicial (Activity activity) {
    this.activity = activity;
}

@Override
 protected String doInBackground(String... params) {
         try {
              String url = "http://www.cuboweb.com.br/android/listapaginabuscames.php";

                String respostaRetornada = null;
                respostaRetornada = Conexao.executaHttpGet(url);
                String resposta  = respostaRetornada.toString();
            } catch (Exception erro1) {
                 
 resposta   = "";
            }
            return 
resposta   ;
    }
    protected void onPostExecute(String resposta) {

            if ( !
resposta.equals("")) {
                 //Faça o trabalho para resultado correto, a resposta vinda do servidor vai estar em resposta caso o resultado seja uma String     
            } else {
               Toast.makeText(activity, "Não foi possível obter os resultados!", Toast.LENGHT_LONG).show();
                Mensagens("Impossivel exibir lista ", "Verifique sua internet ");


                String[] errorlista = { "Não foi possiver exibir a lista de noticias, verifique sua internet" };

                ArrayAdapter<String> arrayAdapter1 = new ArrayAdapter<String>(activity, android.R.layout.simple_list_item_1, errorlista);
                listanoticiabusca.setAdapter(arrayAdapter1);
            }
        }
}

A idéia é usar a activity ao invés de Classe.this 


Em 25 de setembro de 2012 19:43, Felippe dos Santos Ferreira <felippenasuacasa@gmail.com> escreveu:
fiz assim confome vc disse mais não aparece lista nenhum...
amigos é assim mesmu uma classe dentro de outra...
como é o nome disso?




//coloquei assim dentro do oncreate
new MinhaListaInicial().execute();


    public class MinhaListaInicial extends AsyncTask<String, Void, Void> {

        private String resposta = null;
        private boolean respostaOk = true;

        @Override
        protected Void doInBackground(String... params) {
            try {
                String url = "http://www.cuboweb.com.br/android/listapaginabuscames.php";

                String respostaRetornada = null;
                respostaRetornada = Conexao.executaHttpGet(url);
                resposta = respostaRetornada.toString();
            } catch (Exception erro1) {
                respostaOk = false;
            }
            return null;
        }

        protected void onPostExecute(String result) {

            if (respostaOk) {

                char separador = '#';
                int contaUsuarios = 0;
                for (int i = 0; i < resposta.length(); i++)
                    if (separador == resposta.charAt(i))
                        contaUsuarios++;

                ListaNoticiasMes = new String[contaUsuarios];

                char caracter_lido = resposta.charAt(0);
                String nome = "";
                for (int i = 0; caracter_lido != '^'; i++) {
                    caracter_lido = resposta.charAt(i);
                    if (caracter_lido != '#') {
                        nome += (char) caracter_lido;
                    } else {
                        ListaNoticiasMes[posicao] = "" + nome;
                        posicao++;
                        nome = "";
                    }
                }

                ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(TelaBuscarExibeNoticias.this, android.R.layout.simple_list_item_1, ListaNoticiasMes);
                listanoticiabusca.setAdapter(arrayAdapter);

                listanoticiabusca.setOnItemClickListener(new OnItemClickListener() {
                    public void onItemClick(AdapterView<?> parentView, View selectedItemView, int position, long id) {
                        // TODO Auto-generated method stub
                        Toast.makeText(getApplication(), ((TextView) selectedItemView).getText(), Toast.LENGTH_LONG).show();
                        Intent prox = new Intent(TelaBuscarExibeNoticias.this, NoticiaDetalhada.class);
                        prox.putExtra("NOMES", ((TextView) selectedItemView).getText());
                        startActivity(prox);
                    }

                });
            } else {
                Mensagens("Impossivel exibir lista ", "Verifique sua internet ");


                String[] errorlista = { "Não foi possiver exibir a lista de noticias, verifique sua internet" };

                ArrayAdapter<String> arrayAdapter1 = new ArrayAdapter<String>(TelaBuscarExibeNoticias.this, android.R.layout.simple_list_item_1, errorlista);
                listanoticiabusca.setAdapter(arrayAdapter1);
            }
        }

    }

Em 25 de setembro de 2012 15:07, Lucas de Jesus Matias <lucas.matias.87@gmail.com> escreveu:
Deixe tudo de fora do doInBackground, exceto a comunicação com o servidor e a organização dos dados vindos do servidor.

O resto você faz no onPostExecute. 

Em 25 de setembro de 2012 15:02, Felippe dos Santos Ferreira <felippenasuacasa@gmail.com> escreveu:

O adapter que vc diz é a lista?
Em 25/09/2012 15:00, "Lucas de Jesus Matias" <lucas.matias.87@gmail.com> escreveu:


>
> Se não me engano o adapter você tem que por no OnPostExecute,
>
>
> Olha só o meu exemplo:
>
> Também comecei a aprender sobre isso ontem, mas pelo que entendi, o doInBackground fica só a parte pesada, e joga o resultado para resolver o resto no OnPostExecute, me corrijam se estiver errado. 
>
> public  class ChecarSessaoTask extends AsyncTask<String, Void, Boolean>{
> private ProgressDialog progress;
> private SessionActivity activity;
>
> public ChecarSessaoTask(SessionActivity activity) {
> this.activity = activity;
> }
> @Override
> protected void onPreExecute() {
> progress = new ProgressDialog(activity);
> progress.setMessage("Carregando...");
> progress.show();
> }
> @Override
> protected Boolean doInBackground(String... params) {
> return Sessao.checarSessaoExterna(activity);
> }
> @Override
> protected void onPostExecute(Boolean resultado) {
> progress.dismiss();
> AplicacaoCMA app = activity.app;
> if(!resultado) {
> new RecarregaUsuarioTask(activity).execute(); 
> } else {
> activity.geraContador();
> }
> } 
>
> }
>
> Em 25 de setembro de 2012 10:53, Felippe dos Santos Ferreira <felippenasuacasa@gmail.com> escreveu:
>
>> galera fiz um app tudo certinho na versão 2,2
>> ai a galera do trampo disse "Boa mlk, muito show, coloca nu tablet pra gente ver roda, e coloca nu cel do diretor pra ele testa na casa dele"
>> Ai aconteceu o problema, em versões acima da 2,3 ele num roda, da erro...
>> ai lendo a documentação do android vi que precisa de um tal de AsyncTask,
>> eu fiz mais a lista aparece em branco.
>> poderiam mi dar umas dicas de como fazer funfar...
>>
>> segue o codigo:
>>
>> public void onCreate(Bundle savedInstanceState) {
>>
>>       new minhaListaInicial();
>>
>>
>> }
>>
>> public class minhaListaInicial extends AsyncTask <Void, Void, Void> {  //acho que estou errando aqui
>>            
>>         protected void onPostExecute(String result) {    
>>         }
>>
>>         @Override
>>         protected void onPreExecute() {
>>         }
>>
>>         @Override
>>         protected void onProgressUpdate(Void... values) {
>>         }
>>
>>         @Override
>>         protected Void doInBackground(Void... params) {
>>             // TODO Auto-generated method stub
>>             try {
>>                 String url = "http://www.xxx.com.br/android/listapaginabuscames.php";
>>                 String respostaRetornada = null;
>>                 respostaRetornada = Conexao.executaHttpGet(url);
>>                 String resposta = respostaRetornada.toString();
>>                 char separador = '#';
>>                 int contaUsuarios = 0;
>>                 for (int i = 0; i < resposta.length(); i++)
>>                     if (separador == resposta.charAt(i))
>>                         contaUsuarios++;
>>
>>                 ListaNoticiasMes = new String[contaUsuarios];
>>
>>                 char caracter_lido = resposta.charAt(0);
>>                 String nome = "";
>>                 for (int i = 0; caracter_lido != '^'; i++) {
>>                     caracter_lido = resposta.charAt(i);
>>                     if (caracter_lido != '#') {
>>                         nome += (char) caracter_lido;
>>                     } else {
>>                         ListaNoticiasMes[posicao] = "" + nome;
>>                         posicao++;
>>                         nome = "";
>>                     }
>>                 }
>>                
>>                 ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(TelaBuscarExibeNoticias.this, android.R.layout.simple_list_item_1, ListaNoticiasMes);
>>                 listanoticiabusca.setAdapter(arrayAdapter);
>>                
>>                 listanoticiabusca.setOnItemClickListener(new OnItemClickListener() {
>>                     public void onItemClick(AdapterView<?> parentView,
>>                             View selectedItemView, int position, long id) {
>>                         // TODO Auto-generated method stub
>>                         Toast.makeText(getApplication(),
>>                                 ((TextView) selectedItemView).getText(),
>>                                 Toast.LENGTH_LONG).show();
>>                         Intent prox = new Intent(TelaBuscarExibeNoticias.this,
>>                                 NoticiaDetalhada.class);
>>                         prox.putExtra("NOMES", ((TextView) selectedItemView).getText());
>>                         startActivity(prox);
>>                     }
>>                 });    
>>             } catch (Exception erro1) {
>>                 Mensagens("Impossivel exibir lista ", "Verifique sua internet "
>>                         + erro1);
>>                
>>                 String [] errorlista = {"Não foi possiver exibir a lista de noticias, verifique sua internet"};
>>                
>>                 ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(TelaBuscarExibeNoticias.this, android.R.layout.simple_list_item_1, errorlista);
>>                 listanoticiabusca.setAdapter(arrayAdapter);
>>             }
>>             return null; // acho que deveria retornar algo
>>         }
>>
>> --
>>  
>>  
>
>
> --
>  
>  

--
 
 

--
 
 

--
 
 

--
 
 

--
 
 

--
 
 

--
 
 

--
 
 

--
 
 

--
 
 

--
 
 

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comentários:

Postar um comentário