1
resposta

Solução usando o Parcelable

public class Aluno implements Parcelable {

    private final String nome;
    private final String telefone;
    private final String email;

    public Aluno(String nome, String telefone, String email) {
        this.nome = nome;
        this.telefone = telefone;
        this.email = email;
    }

    protected Aluno(Parcel in) {
        nome = in.readString();
        telefone = in.readString();
        email = in.readString();
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(nome);
        dest.writeString(telefone);
        dest.writeString(email);
    }

    @Override
    public int describeContents() {
        return 0;
    }

    public static final Creator<Aluno> CREATOR = new Creator<Aluno>() {
        @Override
        public Aluno createFromParcel(Parcel in) {
            return new Aluno(in);
        }

        @Override
        public Aluno[] newArray(int size) {
            return new Aluno[size];
        }
    };

// ...

}
public class FormularioAlunoActivity extends AppCompatActivity {

// ...

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_formulario_aluno);

    // ...

        populaFormulario();

    }

    private void populaFormulario() {

        Intent intent = getIntent();
//        Aluno aluno = (Aluno) intent.getSerializableExtra("aluno");
        Aluno aluno = intent.getParcelableExtra("aluno");

        campoNome.setText(aluno.getNome());
        campoEmail.setText(aluno.getEmail());
        campoTelefone.setText(aluno.getTelefone());
    }

// ...

}
public class ListaAlunosActivity extends AppCompatActivity {

// ...

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

    private void iniciaListaAlunos() {
        ListView listaDeAlunos = findViewById(R.id.activity_lista_alunos_listview);
        final List<Aluno> alunos = dao.todos();

        listaDeAlunos.setAdapter(new ArrayAdapter<>(
                this,
                android.R.layout.simple_list_item_1,
                alunos));

        listaDeAlunos.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int posicao, long id) {
                Aluno alunoEscolhido = alunos.get(posicao);
                // Log.i("ALUNO", alunoEscolhido.toString()); // loga no logcat

                Intent intent = new Intent(ListaAlunosActivity.this, FormularioAlunoActivity.class);
                intent.putExtra("aluno", alunoEscolhido); 
                startActivity(intent);
            }
        });
    }

// ...

}
1 resposta

Fala Italo, tudo bem ?

Sua maneira de resolver o problema, foi bem bacana!

Atualmente temos no kotlin uma interface que resolve isso, evitando que nós precisemos digitar isso tudo :D

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software