Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
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






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

×