Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

icemaster

como usar arraycollection

Recommended Posts

Estou querendo acessar o atributo de um objeto que por sua vez encontra-se dentro de uma lista retornada do webservice

 

Fiz um callresponder chamado ListaResult

 

então coloquei assim:

private var obj:ArrayCollection = (ListaResult.lastresult as Arraycollection);

protected function returnVar():void
{
   manag_form.returnCargo = obj.getItemAt(1).cargo;
}

 

manag_form = meu componente

returnCargo = text

cargo = atributo que quero acessar dentro do meu objeto

 

no caso, quero colocar todos os objetos dentro de um arrayCollection e acessar os atributos do objeto 'X'

Alguem sabe como proceder?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você já tentou setar ele como:

 

private var obj:ArrayCollection = new ArrayCollection(ListaResult.lastresult as Arraycollection);

 

 

Verifica se dessa forma funciona...

 

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo este é um típico problema da falta de generics... AS Collections por default usam o topo da herança: Object.

Então quando você insere algo lá, automaticamente ele considera object. No java ou o c# usando generics você meio que "tipa" a collection ( ArrayCollection<MeuObj>), aiserá uma array collection dos seus objetos e v poderá fazer isto livremente: obj.getItemAt(1).cargo;

 

Mas se não me engano soh o vector que possui generics no Flash, então não resta outra opção a nao ser fazer o cast: manag_form.returnCargo = (obj.getItemAt(1) as MeuObj).cargo;

Compartilhar este post


Link para o post
Compartilhar em outros sites

obrigado pela dica irineu vou testar e já retorno

 

----------------------------------------------------------

 

ok, eu testei mas ainda não funcionou.

 

deu o seguinte erro:

Error #1009: Cannot access a property or method of a null object reference.
at Organograma()[C:\Documents and Settings\hb67634\Desktop\Flex_Projetos\Organograma\src\Organograma.mxml:34]
at _Organograma_mx_managers_SystemManager/create()[_Organograma_mx_managers_SystemManager.as:53]
at mx.managers.systemClasses::ChildManager/initializeTopLevelWindow()[E:\dev\hero_private\frameworks\projects\framework\src\mx\managers\systemClasses\ChildManager.as:311]
at mx.managers::SystemManager/initializeTopLevelWindow()[E:\dev\hero_private\frameworks\projects\framework\src\mx\managers\SystemManager.as:3063]
at mx.managers::SystemManager/http://www.adobe.com/2006/flex/mx/internal::kickOff()[E:\dev\hero_private\frameworks\projects\framework\src\mx\managers\SystemManager.as:2849]
at mx.managers::SystemManager/http://www.adobe.com/2006/flex/mx/internal::preloader_completeHandler()[E:\dev\hero_private\frameworks\projects\framework\src\mx\managers\SystemManager.as:2729]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.preloaders::Preloader/timerHandler()[E:\dev\hero_private\frameworks\projects\framework\src\mx\preloaders\Preloader.as:542]
at flash.utils::Timer/_timerDispatch()

 

dexei meu codigo assim agora:

[bindable]
private var funcLista:ArrayCollection =(ListaResult.lastResult as ArrayCollection);

protected function application1_creationCompleteHandler(event:FlexEvent):void
{
form_manag.returnCargo=(funcLista.getItemAt(1) as Funcionario).cargo;

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

isto quer dizer que (funcLista.getItemAt(1) as Funcionario) não pode ser um obj do tipo Funcionario, então o resultado do cast será null.

([null]).cargo lançará esta exception.

 

Percebi que você pegou o último elemento de uma lista: ListaResult.lastResult as ArrayCollection, e considerou como uma arraycollection?

É uma arraycollection dentro de outra?

 

 

protected function application1_creationCompleteHandler(event:FlexEvent):void
{
  trace(funcLista); //para ver se não é null
  trace(funcLista.getItemAt(1));//para ver se não é null e o tipo
  //form_manag.returnCargo=(funcLista.getItemAt(1) as Funcionario).cargo;

}

 

depois você posta o resultado

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok eu testei mas nao deu certo.

 

pelo que me parece, a variável

 

[bindable] 
private var funcLista:ArrayCollection =(ListaResult.lastResult as ArrayCollection); 

 

não tem nada dentro.

 

meu retorno na aba data/serve tá assim:

 

Lista():Funcionario[]

-cargo:String

-id:int

-managerDirect:String

-nome:String

-site:String

 

queria saber o seguinte, isso significa que Lista é um arraycollection com varios funcionarios dentro?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ta faltando da o new ArrayCollection, e depois você vai conseguir fazer o que você quer.

Abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

valeu vou testar ja retorno.

 

----------------

eh ta dando o mesmo erro.

 

eu fiz:

 

var funcLista:ArrayCollection=new ArrayCollection(ListaResult.lastresult);

form_manag.returnCargo=(funcLista.getItemAt(0) as Funcionario).cargo;

 

ta dizendo que nao pode acessar o objeto.

can't access a value of null or without value reference.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta assim:

 

var funcLista:ArrayCollection = new ArrayCollection(ListaResult.lastresult as Array);

form_manag.returnCargo=(funcLista.getItemAt(0) as Funcionario).cargo;


 

Depois debuga certinho pra ve o que ta indo pro collection.

 

Abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.