/ / Eu estou olhando para atualizar um ListView sem recarregar a página - android, android-layout, android-intent, android-widget

Eu estou olhando para atualizar um ListView sem recarregar a página - android, android-layout, android-intent, android-widget

Eu estou olhando para atualizar um ListView sem recarregar a página. Mais precisamente, eu tenho um serviço que está enviando dados para um ListView em um Activity, No entanto, o Activity carrega muito antes do Service pode obter os dados. Então eu preciso ser capaz de carregar / recarregar o ListView depois de Activity já carregou.

Respostas:

1 para resposta № 1

eu achei aquilo notifyDataSetChanged só funciona se você usar o add, insert, removee clear funções no Adapter, então acabei fazendo da seguinte forma em uma implementação semelhante:

A AsyncTask obtém todos os dados em doInBackground. Então, quando terminar, defino o adaptador de lista pela primeira vez em onPostExecute. Para que o usuário saiba que algo está carregando, eu coloquei um TextView no topo de Listview e defina seu texto para "Carregando .." em onPreExecute e depois torná-lo invisível em onPostExecute quando os dados estão prontos.

Se você precisar atualizar os dados, basta executar o AsyncTask novamente.

Eu gosto desse jeito porque você está apenas definindo o ArrayAdapter uma vez (ou seja, quando você finalmente tiver todos os dados). Aqui é mais no AsyncTask no caso de você precisar dele. Os documentos têm algum código de exemplo legal.


1 para resposta № 2

Ligar notifyDataSetChanged() no ListView"s Adapter sempre que você quiser atualizá-lo.


1 para resposta № 3

Eu diria para usar IntentService ao invés de Service. Por usando IntentService você será capaz de enviar dados para o fundo Service e também receber os dados atualizados ao disparar um BroadCastReceiver para atualizar sua interface do usuário. Aqui é um exemplo completo de como você pode realizar sua tarefa usando um IntentService.