Tecnologia do Blogger.
RSS

Re: [androidbrasil-dev] Percorrer e utilizar Setters() para carregar valores em uma classe.

Então... eu acho que entendeu mais ou menos.


Eu não sei se eu que estou entendendo e tentando passar da maneira incorreta. Mas obrigado pela atenção, vou olhar esse exemplo também que me passou.

Vou tentar explicar melhor:

Eu tenho uma classe de Pedido com vários atributos, dentre esses atributos eu tenho o atributo de Cliente que é do tipo Cliente, que é uma outra classe que eu tenho.
Eu até conseguir resolver isso fiz da seguinte maneira:

campos[i].set(this, new Cliente(this.RsAtual.getInt(3)));

O que eu precisaria fazer se fosse feito de forma manual e incorreta na estrutura que estou utilizando seria basicamente isso que eu gostaria de fazer, pois estou tendo problemas inclusive para carregar os atributos simples da classe:

this.setComprador(this.RsAtual.getString(4));

Esse RsAtual é um Cursor da classe de Persistencia, a Persistencia assume o objeto e carrega os dados na classe.

Então em cada classe (Cliente, Pedido, PedidoItens e etc). Eu vou possuir um método CarregaDados() que faz o Override do método existente na Persistencia, para carregar o Pedido atual no caso.

On Monday, December 3, 2012 10:50:21 AM UTC-2, CARVO wrote:
Guilherme,
não sei se entendi bem o seu caso, mas aqui está um exemplo pontual. Cuidado, tu não consegue acessar as cosias de Cliente pq está utilizando o THIS. Logo, teria que fazer mais uma cadeia de acessos por reflection para chegar no Cliente ou utilizar como fiz abaixo:



public void metodo()
throws IllegalAccessException, IllegalArgumentException, InvocationTargetException {
       
        Method[] methods = Cliente.class.getMethods();
        for(Method m : methods) {
            if ("setCodigo".equals(m.getName())) {
                m.invoke(cliente, new Object[]{1});
            }
        }
       
}

Abraços.



2012/12/3 Guilherme Bernardi <gui.ber...@gmail.com>
Bom dia.

Alguém já precisou fazer algo semelhante:

Eu tenho uma classe com atributos:

private Integer Numero;
private String Data;
private String Emissao;
private Cliente Cliente;

E eu faço uma consulta no banco SQLite e preciso que minha persistência repasse esse cursor carregando os dados nas propriedades dessa classe. Para eu construir o objeto atual retornado pelo banco.

Meu problema exatamente é por exemplo, eu tenho uma propriedade que é do tipo Cliente.
Eu preciso acessar o set do Código do Cliente lá da Classe Cliente, alguém sabe como faço isso?
Quando são campos simples, tipo String, Integer, tudo bem eu consigo setá-los.

@Override
public void CarregaDados(){
this.Status = eStatus.Carregando;
this.setTabela(this.getClass().getSimpleName());
this.setTabelaSelecao("Numero = " + this.getNumero().toString());
super.CarregaDados();
Field[] campos = this.getClass().getDeclaredFields();
for(int i = 0; i < campos.length; i++) {
if(campos[i].getType().equals(Cliente.class)){
campos[i].setAccessible(true);
}  
}
}

Obrigado desde já.

--
 
 



--

Ricardo Stephan (Carvo).
-- ______________________________________
Analista Desenvolvedor
Professor
Java e PHP, agora Android também...
________________________________________

--
 
 

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comentários:

Postar um comentário