Ir ao conteúdo
  • Cadastre-se
D4ni31

Reiniciar actity através de outra classe

Recommended Posts

Eu estou fazendo um app que mostra em uma listView os contatos contidos no banco de dados, e em todos os elementos desta listView (que são os contatos) existe um botão "Excluir" que apaga o contato do banco de dados, enfim, o app consegue apagar o contato com sucesso, porém eu gostaria que assim que ele apagasse o contato a Activity ou o listView fosse reiniciado para recarregar todos os contatos existentes novamente, assim aquele contato que foi apagado não ficaria aparecendo para o usuario. Eu já tentei chamar minha função "construtor" que constrói o listView, mas quando eu clico no botão "excluir" aparece "O aplicativo Contatos parou." e volta para a Actitivy principal. Como eu resolvo esse problema? Deixarei as minhas duas classes a seguir:

 

Classe da Activity:

package danielhermenegildogimenez.contatos;

import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

import java.util.ArrayList;
import java.util.concurrent.ExecutionException;

import danielhermenegildogimenez.contatos.ListView.ContatosAdapter;
import danielhermenegildogimenez.contatos.WebService.funcoesAsyncTask.Buscar;
import danielhermenegildogimenez.contatos.modelo.Contato;

public class ListaActivity extends AppCompatActivity {
    ArrayList<Contato> contatos = new ArrayList<Contato>();
    String[] values;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_lista);

        values = getIntent().getStringArrayExtra("values");
        construtor();
    }

    public void construtor(){

        String json = "";
        Intent intent = getIntent();
        try {
            json = new Buscar().execute(values[0], values[1], values[2], values[3]).get();
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            e.printStackTrace();
        }
        Gson gson = new Gson();
        contatos = gson.fromJson(json, new TypeToken<ArrayList<Contato>>(){}.getType());
        ArrayAdapter adapter = new ContatosAdapter(this, contatos);
        ListView lista = (ListView) findViewById(R.id.listView);
        lista.setAdapter(adapter);
    }
}

 

Classe que monta o listView:

package danielhermenegildogimenez.contatos.ListView;

import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.concurrent.ExecutionException;

import danielhermenegildogimenez.contatos.ListaActivity;
import danielhermenegildogimenez.contatos.R;
import danielhermenegildogimenez.contatos.WebService.acessoWS;
import danielhermenegildogimenez.contatos.WebService.funcoesAsyncTask.Excluir;
import danielhermenegildogimenez.contatos.modelo.Contato;

import static android.support.v4.app.ActivityCompat.startActivity;

/**
 * Created by Daniel on 03/08/2017.
 */
public class ContatosAdapter extends ArrayAdapter<Contato> {

    private Context context;
    private ArrayList<Contato> contatos;
    private Intent intent;

    public ContatosAdapter(Context context, ArrayList<Contato> contatos){
        super(context, R.layout.contato, contatos);
        this.context = context;
        this.contatos = contatos;
    }

    public View getView(final int position, final View convertView, final ViewGroup parent){

        final int index = position;
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        final View rowView = inflater.inflate(R.layout.contato, parent, false);

        TextView nome = (TextView) rowView.findViewById(R.id.nome);
        TextView cel = (TextView) rowView.findViewById(R.id.cel);
        TextView tel = (TextView) rowView.findViewById(R.id.tel);
        TextView email = (TextView) rowView.findViewById(R.id.email);
        Button editar = (Button) rowView.findViewById(R.id.editar);
        Button excluir = (Button) rowView.findViewById(R.id.excluir);

        nome.setText(contatos.get(position).getNome());
        cel.setText(contatos.get(position).getCel());
        tel.setText(contatos.get(position).getTel());
        email.setText(contatos.get(position).getEmail());

        editar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            }
        });

        excluir.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int aux = contatos.get(index).getId();
                String id = aux + "";
                boolean resultado = false;
                try {
                    resultado = new Excluir().execute(id).get();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                } catch (ExecutionException e) {
                    e.printStackTrace();
                }
                if(resultado == true) {
  					//AQUI FICA O QUE O APP VAI FAZER SE O CONTATO FOR EXCLUIDO COM SUCESSO
                    ListaActivity lista = new ListaActivity();
                    lista.construtor();
                }
                else Toast.makeText(context, "Não foi possivel excluir o contato", Toast.LENGTH_SHORT).show();
            }
        });
        return rowView;
    }

}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

Para sumir com o item:

Object item = getItem(index);
remove(item);
contatos.remove(item);
notifyDataSetChanged();

 

Não precisa de outro código ali no if (resultado...

Editado por brunohpg

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×