[ANDROID] Tentando atualizando lista após alteração

Galera blz?

To com um problema aqui se é o seguinte.

Tenho uma lista com meus contribuintes, e ao clicar em cima de um eu abro uma tela onde eu altero algumas informações dele, ate ai tudo bem. Mas qndo edito o meu contribuinte e clico na seta voltar eu precisava que ele mostrasse a lista com o nome em vermelho, aqui ele mostra a lista com as informações desatualizadas. Eu ate consigo fazer “atualizar” mas da maneira errada, pq na vdd eu chamo a activity e ele carrega a lista novamente, e isso gera uma demora. Sera que alguem pode me ajudar a fazer isso? Desculpa a minha ignorancia no assunto pessoal, é que sou novo e não tenho muito conhecimento.

Segue meu metodo que carrega a lista e envia para o basedapter:

[code]public void mostraLista() {

    aguaApp = (AguaApp) getApplication();
    contribuintelista = new ArrayList<ContribuinteJson>();
    enderecolista = new ArrayList<Endereco>();

    contribuintelista = aguaApp.getDataManager().buscaContribuinte();
    enderecolista = aguaApp.getDataManager().getEnderecoList();

    setListAdapter(new ContribuinteAdapter(this, contribuintelista,
            enderecolista));

}[/code]

Meu adapter:

[code] public View getView(int arg0, View arg1, ViewGroup arg2) {

    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View view = inflater.inflate(R.layout.modelo_arrow, null);

    txtNome = (TextView) view.findViewById(R.id.tvNomePro);
    txtEndereco = (TextView) view.findViewById(R.id.tvEndPro);

    try {
        
        for (int x = 0; x < enderecolista.size(); x++) {
            
            if (enderecolista.get(x).getCodigo() == contribuintes.get(arg0).getCod_endereco()) {

                if (contribuintes.get(arg0).getAno() == 0) {

                    txtNome.setText(contribuintes.get(arg0).getNome_proprietario());
                    txtEndereco.setText(enderecolista.get(x).getNome());

                } else {

                    txtNome.setText(contribuintes.get(arg0).getNome_proprietario());
                    txtEndereco.setText(enderecolista.get(x).getNome());

                    txtNome.setTextColor(Color.RED);
                    txtEndereco.setTextColor(Color.RED);
                }
            }
        }

    } catch (Exception e) {
        System.out.println("Erro: " + e.getMessage());
        e.printStackTrace();
    }

    return view;
}[/code]

Bom pessoal se alguem puder me ajudar fico muito agradecido, abraços.

douglascst90 eu estava com o mesmo problema, a solução que eu fiz foi criar uma classe com Listas publicas e static, e cada vez que eu alterava algum componente da lista eu atualizada dando setAdapter de novo com o mesmo adapter, foi um metodo que eu usei e q não estou tendo problemas até o momento

Hum, a classe que vc diz foi a que estende baseadapter? Não entendi muito bem, sem querer abusar, teria como vc me mostra como vc fez? Obrigado pela ajuda. :slight_smile:

oi douglascst90,
não sei como esta o seu cenario, porém vc está estendendo ListActivity para mostrar a lista?

em uma app minha fiz da seguinte forma:

@Override
	protected void onResume() {
		super.onResume();
		mostraLista();
	}

quando eu editava o item do listActivity, ao voltar pra lista a activity chama o onResume, que faz parte do ciclo de vida da activity, então fiz o tratament para ele fazer essa atualização da lista, e funcionou perfeito ( Para meu cenario ).

deixa eu ver se o seu problema é o mesmo que o meu, Voce abre uma activity, nessa activity voce clica em um item da lista e abre outra tela, e nessa tela voce define alguns parametro salva e quer que esse parametro sejão atualizado na activity anterior isso

[quote=bruno.sbrunoro]deixa eu ver se o seu problema é o mesmo que o meu, Voce abre uma activity, nessa activity voce clica em um item da lista e abre outra tela, e nessa tela voce define alguns parametro salva e quer que esse parametro sejão atualizado na activity anterior isso
[/quote]

no método onResume() da Activity onde contém a lista, você chama o metodo que preenche a lista novamente. e seu problema está resolvido.

ricardobras, obrigado até consegui fazer, mas o único problema é que, minha lista contem qse 2000 registro, e pra ela carregar demora um tempo não muito interessante. Essa lentidão é decorrente por ter muito registro ou não poderia que demorar assim, leva em torno de 40segundo pra carregar a lista.

[quote=bruno.sbrunoro]deixa eu ver se o seu problema é o mesmo que o meu, Voce abre uma activity, nessa activity voce clica em um item da lista e abre outra tela, e nessa tela voce define alguns parametro salva e quer que esse parametro sejão atualizado na activity anterior isso
[/quote]

é exatamente isso msm, so que a unica diferença é que na minha lista quando eu faço uma alteração e chamo a lista novamente a cor do texto do contribuinte editado fica vermelho, ate ai td ok. Mas como eu disse, eu tenho que carregar a toda a lista novamente e isso causa uma certa demora.

O meu a lista tambem é bem grande entao eu so gero a lista uma vez e depois eu so modifico o que eu quero , dai eu tenho uma classe chamada Listas que ta mais ou menos assim

...
...
public static List&lt;Pessoa&gt; = new ArrayList&lt;Pessoa&gt;();
.....
....

foi um metodo para eu evitar de ficar fazendo busca no banco para melhorar no desempenho alem de manipular em qual quer classe

Não entendi muito bem.

Como vc altera na lista so o que voce quer, se no momento em que eu vou carregar a lista eu passo uma lista populada e assim ele preenche conforme essa lista. Nao entendi como ele atualiza so que voce quer.

assim

Classe Listas

public class Listas {

         public static List&lt;Pessoa&gt; = new ArrayList&lt;Pessoa&gt;();

}

ai na minha activity que eu gero a lista a partir do banco eu crio um objeto Pessoa


Pessoa temp = new Pessoa();
Listas.pessoas.add(temp);

ai por exemplo eu quero adicionar o telefone da pessoa

SUA_LIST_VIEW.setOnItemClickListener(new AdapterView.OnItemClickListener() {
	public void onItemClick(AdapterView&lt;?&gt; parent,View view,int posicao,long id){
                Pessoa temp = Listas.pessoa.get(posicao);
                temp.setTelefone(12344321);
                Lista.pessoa.set(posicao,temp);
        }
});

se precisar remover é

Listas.pessoa.remove(posicao);

bruno, qndo vc carrega sua lista pela primeira vez, que faz a consulta no banco e popula ela demora qnto tempo mais ou menos? Vc deixa ela executar e executa alguma thread ou vc deixa ela carregar direto?

e executo um thread que so vai continuar a activity quanto essa thread chegar ao final ela demora 1 minuto para preencher 1000 linhas