Bom noite, ao criar meu adapter personalizado de lista de alunos, acabei achando mais rápido fazer um extends de ArrayAdapter do que BaseAdapter, porque assim só preciso fazer o override do getView e terei todo comportamento que já tinha antes quando implementava o ArrayAdapter na minha activity. mantendo o msm comportamento de setar o nome e telefone nas TextView do layout R.layout.item_aluno .
OBS: vendo o código do ArrayAdapter, notei que é o método createViewFromResource que é chamado pelo getView é o responsável por executa um tratamento para saber se é um TextView, então se eu sobrescrever o getView resolveria o problema do java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView
Gostaria de saber se isso seria uma má prática ?
segue o código:
package br.com.agenda.ui.adapter;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import androidx.annotation.NonNull;
import br.com.agenda.R;
import br.com.agenda.model.Aluno;
public class ListaAlunosAdapter extends ArrayAdapter<Aluno> {
public ListaAlunosAdapter(@NonNull Context context) {
super(context, R.layout.item_aluno);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View viewCriada = LayoutInflater.from(super.getContext()).inflate(R.layout.item_aluno, parent, false);
((TextView)viewCriada.findViewById(R.id.item_aluno_nome)).setText(getItem(position).getNome());
((TextView)viewCriada.findViewById(R.id.item_aluno_telefone)).setText(getItem(position).getTelefone());
return viewCriada;
}
}