Tecnologia do Blogger.
RSS

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

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