Re: [androidbrasil-dev] Atualizar ListView usando Service

Basicamente, o que eu queria era passar como parâmetro o próprio widget ListView, como eu fiz na AsyncTask da seguinte maneira:

public class MainActivity extends AppCompatActivity {
Intent it;
private ListView listView;
private final String urlJson = "filmes.json";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView) findViewById(R.id.lista_filmes);
}

@Override
protected void onResume() {
super.onResume();
new ConteudoSync(listView, MainActivity.this).execute(urlJson);
}

@Override
protected void onDestroy() {
super.onDestroy();
stopService(it);
}
}

O que eu fiz na classe MainActivity, foi basicamente chamar o onResume com o asynctask e na classe async fiz o seguinte:

public class ConteudoSync extends AsyncTask<String, Void, String> {
String conteudo = "";
BaixarFilme baixarLivro = new BaixarFilme();
ClassParser classParser = new ClassParser();

private ListView listView;
private final Context context;
public ConteudoSync(ListView listView, Context context){
super();
this.listView = listView;
this.context = context;
}

@Override
protected String doInBackground(String... params) {

try {
            //Aqui eu to passando a url para a classe ListaFilmes que vai me retornar o conteudo do arquivo json
conteudo = baixarLivro.ListaFilmes(params[0]);
} catch (IOException e) {
e.printStackTrace();
}
return conteudo;
}

@Override
protected void onProgressUpdate(Void... values) {
super.onProgressUpdate(values);
}

@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
try {
            //Aqui é onde eu estou fazendo o parser da string json e colocando na lista
ArrayList<modelJSON> arrayList = classParser.Parser(s);
ListAdapter a = new adapter_parse(context, arrayList);
listView.setAdapter(a);
} catch (JSONException e) {
e.printStackTrace();
}
}
}

E dessa forma que eu esperava fazer:
@Override
protected void onResume() {
super.onResume();
//A classe ServiceLoading é minha classe responsável pelo Service da aplicação
it = new Intent(this, ServiceLoading.class);
it.putExtra("listView", listView)
startService(it);
} 

Em quarta-feira, 31 de maio de 2017 13:00:36 UTC-3, Jonathan souza aguiar escreveu:
Não sei se entendi muito bem,mas vou tentar ajudar com o que eu entendi.

Voce poderia enviar os dados de seu service atravez de um intent para a sua activity, onde vc registraria um BroadcastReceiver responsavel por extrair os dados deste intent e adapta-los  em seu listView. 

O ideal é que somente a activity manipule a interface.


Em 31 de mai de 2017 11:23, "Pedro Clericuzi" <cleri...@gmail.com> escreveu:
Olá pessoal, 

Eu tenho feito alguns exercícios esses dias que consiste em pegar dados a partir de um JSON e jogar numa ListView. Consegui fazer isso tranquilo usando AsyncTask, o problema é que, para funfar, na classe Async eu usei um construtor passando uma ListView e o contexto e na classe eu só precisei settar os valores pro adapter e pronto. Porém, o mesmo eu não posso fazer para um Service, não posso criar um construtor, teria que passar através da Intent, mas o putExtra não recebe widget como parâmetro. Teria alguma maneira de passar essa listview pro Service ou alguma forma melhor, e mais recomendável, de atualiza-la?

Obrigado!

--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

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

0 comentários:

Postar um comentário