Bom dia pessoas!!
pessoal estou mexendo na minha aplicação aqui e senti a necessidade de criar um adapter mais performatico e queria saber de vc’s quais são as melhores praticas para criar um adapter performatico?
o problema do meu adapter é que ele tem que ser genérico para um mesmo objeto ou seja eu posso exibir atributos diferentes do mesmo objeto para cada usuário.
ex: Cliente
o cliente possui, nome fantasia, razão social, CNPJ, inscrição estadual, código, endereço… etc.
para o usuário 1 é exibido na lista o nome fantasia e o código.
para o usuário 2 é exibido na lista a razão social, o código e o CNPJ.
a ideia inicial que eu tive depois de pesquisar algumas coisas foi criar uma interface como mostrado abaixo.
package util.adapter.AdapterUtil;
import android.view.View;
import domain.Cliente;
import util.adapter.ViewHolder;
public interface IConfiguracaoViewAdapter {
public View buildView(Object object, View view, ViewHolder holder);
public View buildViewCliente(Cliente cliente, View view, ViewHolder holder);
}
e implementei essa interface em uma classe default
package util.adapter.AdapterUtil;
import android.view.View;
import android.widget.TextView;
import domain.Cliente;
import util.adapter.ViewHolder;
public class ConfiguracaoViewAdapterDefault implements IConfiguracaoViewAdapter{
@Override
public View buildView(Object object, View view, ViewHolder holder) {
if (object instanceof Cliente) {
return buildViewCliente(((Cliente)object), view, holder);
}
return null;
}
@Override
public View buildViewCliente(Cliente cliente, View view, ViewHolder holder) {
if (holder == null) {
holder = new ViewHolder();
TextView tvCodigo = (TextView) view.findViewById(R.list_cliente_id.txtCodigo);
TextView tvNomeCliente = (TextView) view.findViewById(R.list_cliente_id.txtNome);
holder.setProperty(tvCodigo, "codigo");
holder.setProperty(tvNomeCliente, "nomeCliente");
view.setTag(holder);
}
((TextView)holder.getProperty("codigo")).setText(cliente.getCodigo());
((TextView)holder.getProperty("nomeCliente")).setText(cliente.getNomeCliente());
return view;
}
}
e para usuários específicos eu estendo a nova classe da classe default e mudo os atributos que eu quero e chamo essa classe dentro do getView().
alguém tem alguma dica ou algum exemplos sobre isso?