Faça assim:
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
width="100%" height="100%"
creationComplete="initApp()">
private function initApp() : void
{
meuComponente.itemRenderer = new ClassFactory( MeuRenderer );
}
private function obtemObjeto( ) : void
{
var i : int = meuComponente.selectedIndex;
var renderer : MeuRenderer = meuComponente.dataGroup.getElementAt( i ) as
MeuRenderer;
............
seu alerta ->
Alert.show("Cliquei: " +
renderer.labelDisplay.text);
.............
}
Espero ter ajudado.
Abraço,
Ernani
2012/1/11 Julio Cesar <[email protected]>
> Tem alguma forma de eu percorrer meu list.dataProvider e chamar essa
> função:
>
>
> public function clickCheck(event:Event):void
> {
> var e:MyCheckBoxEvent = event as MyCheckBoxEvent;
> //e.itemRenderer.cb.label = "changed"; //just to verify
> that we're looking at the correct renderer :)
> Alert.show("Cliquei: " + e.itemRenderer.labelDisplay.text);
> }
>
> ?????
>
> Em 11/01/2012 11:03, Ernani Joppert Pontes Martins escreveu:
>
> Eu fiz algo parecido, mas, como no componente List eu tenho um objeto
> (VO), eu setei no VO uma propriedade booleana.
>
> Como tudo se trata de um VO genérico, eu fiz o item renderer como se
> fosse um componente data aware...:P
>
> MeuVO contém a propriedade
>
> var isSelected : Boolean = false;
>
> No ItemRenderer em si, fiz os seguintes métodos, dentro de fx:Script...
>
> // grava ou remove do db de acordo com a propriedade
> isSelected
> private function onChange( evt : Event ) : void
> {
> var vo : MeuVO = data as MeuVO;
>
> if ( !vo.isSelected )
> {
> // grava no db
> setVOValueInDB.token = service.createOrUpdateVO(
> obj );
> }
> else
> {
> // deleta do db
> removeVOValueInDB.token = service.deleteVO( obj );
> }
> }
>
> // callback de retorno quando marcando um item
> // ou seja, marcando um item como selecionado
> protected function setVOValueInDBResultHandler( event :
> ResultEvent ) : void
> {
> var ret : Boolean = setVOValueInDB.lastResult as
> Boolean;
>
> if ( ret )
> {
> data.isSelected = true;
> }
> else
> {
> data.isSelected = false;
> }
> }
>
> // retorno do callback quando removendo um registro
> // ou seja, desmarcando um item
> protected function removeVOValueInDBResultHandler( event :
> ResultEvent ) : void
> {
> var ret : Boolean = removeVOValueInDB.lastResult as
> Boolean;
>
> if ( ret )
> {
> data.isSelected = false;
> }
> else
> {
> data.isSelected = true;
> }
> }
>
> Já no MXML do mesmo item renderer, contém isto:
>
> <fx:Declarations>
> <services:GenericVOService id="service"
> fault="Alert.show( 'Aqui vai a mensagem de erro do RemoteObject, uma
> msg genérica.' )"
> showBusyCursor="true" />
>
> <s:CallResponder id="setVOValueInDB"
> result="setVOValueInDBResultHandler(event)" />
> <s:CallResponder id="removeVOValueInDB"
> result="removeVOValueInDBResultHandler(event)" />
> </fx:Declarations>
>
> <s:HGroup width="100%" height="100%" horizontalAlign="left"
> verticalAlign="middle" paddingLeft="5">
> <s:CheckBox selected="{ data.isSelected }"
> click="onChange(event);" />
> <s:Label text="{ data.categoria }" />
> </s:HGroup>
>
> Abraço,
>
> Ernani
>
> 2012/1/11 Julio Cesar <[email protected]>
>
>> Pessoal consegui por parte,* (agora preciso adaptar isso para
>> selecionar todos de uma vez)*
>>
>> consegui na aplicação principal pegar o event do itemrenderer, tipo o
>> click do checkbox.
>>
>> criei uma classe:
>>
>> package
>> {
>> import flash.events.Event;
>>
>> public class MyCheckBoxEvent extends Event
>> {
>> public var isSelected:Boolean;
>> public var itemRenderer:Object;
>> public static const SELECTED_CHANGED:String = "selectedChanged";
>>
>> public function MyCheckBoxEvent(type:String, itemRenderer:Object,
>> isSelected:Boolean=false){
>> super(type);
>> this.itemRenderer = itemRenderer;
>> this.isSelected = isSelected;
>> }
>>
>> override public function clone():Event{
>> return new MyCheckBoxEvent(type, this.itemRenderer,
>> this.isSelected);
>> }
>> }
>> }
>>
>>
>> no click do meu checkbox dentro do itemrenderer coloquei isso:
>>
>> var evt:MyCheckBoxEvent = new
>> MyCheckBoxEvent(MyCheckBoxEvent.SELECTED_CHANGED, this, cb.selected);
>> owner.dispatchEvent(evt); //Dispatch event from the List
>> component, not from the item renderer
>>
>> ai no meu list coloquei assim:
>>
>> list.addEventListener('selectedChanged',clickCheck);
>>
>> e minha funcao:
>>
>>
>> public function clickCheck(event:Event):void
>> {
>> var e:MyCheckBoxEvent = event as MyCheckBoxEvent;
>> Alert.show("Cliquei: " +
>> e.itemRenderer.labelDisplay.text);
>> }
>>
>>
>> fonte: http://nwebb.co.uk/blog/?p=47
>>
>>
>>
>> Em 11/01/2012 01:58, Cristian Göhl escreveu:
>>
>> Boa madrugada hehe,
>>
>> Eu uso *override no set data** *para os meus IR, indiferente de criados
>> via MXML ou AS.
>>
>> override public function set data(value:Object):void
>> {
>> super.data = value;
>> if(value != null)
>> {
>> // bla bla bla acessa os dados de data[column.dataField]
>> ou não e faz o que precisar com outros comps(cb, label,etc);
>> }
>> }
>>
>> Ai, meio que esqueci, acho que cria o change do CB no IR, e manda
>> atualizar os dados originais(ex. data[column.dataField]);
>>
>> Dependendo o que você precisar, também pode disparar eventos do IR e
>> escutar no form, então fazer algo.
>>
>> Abraço.
>>
>> *From:* Julio Cesar <[email protected]>
>> *Sent:* Tuesday, January 10, 2012 4:33 PM
>> *To:* [email protected]
>> *Subject:* Re: [flexdev] Re: Como acessar um itemrenderer de um list ??
>>
>> Outra coisa, meu itemrenderer não é só um checkbox, é um checkbox, um
>> label, e um textinput, pq qdo clico 2x em cima dele, consigo renomeá-lo.
>>
>> Em 10/01/2012 14:47, Julio Cesar escreveu:
>>
>> Assim, estou montando um list dinamicamente:
>>
>> var lista:List = new List();
>> lista.width = 100;
>> e vou setando as confs dele (tamanho, cor, etc...)
>>
>> depois eu digo que cada linha será um checkbox, a forma que eu achei
>> dinamicamente foi com ClassFactory, desssa forma:
>>
>> var customItemRenderer:ClassFactory = new
>> ClassFactory(checkRenderer);
>> lista.itemRenderer = customItemRenderer;
>>
>> depois eu preencho o dataprovider dele com meu arraycollection
>>
>> depois eu adiciono na tela:
>> panel_listas.addElement(lista);
>>
>>
>> tudo isso dinamicamente, até ai blz, gera legal, ai eu quero acessar
>> alguma linha e dar um selected no checkbox, ou até mesmo selecionaar todos
>> os checks ao msm tempo, é ai q eu enrosco.
>>
>> erictonussi
>> eu quero pq eu quero saber quais estão marcados
>>
>> helio.afsilva
>> não sei se da para pegar o array bindado pq toda hora muda ele
>>
>> leonardoc.oliveira
>> gostei do seu link hehe
>>
>> Em 10/01/2012 13:36, Eric Tonussi escreveu:
>>
>> Explica melhor o que exatamente você quer fazer. Para que você quer
>> acessar este item render?
>>
>> Em 10 de janeiro de 2012 13:25, Julio Cesar <[email protected]>escreveu:
>>
>>> Cara difícil isso, coloquei um breakpoint nas linhas abaixo (na vdd não
>>> manjo mto debugar) to tentando aprender
>>>
>>> var customItemRenderer:ClassFactory = new ClassFactory(checkRenderer);
>>> lista.itemRenderer = customItemRenderer;
>>>
>>> lista.dataProvider = ac_colunas;
>>>
>>> dentro de checkRenderer tem um combobox chamado cb que recebe 'selected'
>>>
>>> mas não consegui identificar ainda
>>>
>>>
>>> Em 10/01/2012 12:47, Leonardo Oliveira escreveu:
>>>
>>>> Julio, use o modo debug. Coloque um breakpoint onde vc quiser,
>>>>
>>>> adicione uma expressão watch ao seu itemRenderer e veja na aba
>>>> Expressions. Tudo que vc precisa está lá.
>>>>
>>>> On 10 jan, 11:05, Julio Cesar<[email protected]> wrote:
>>>>
>>>>> Boa tarde pessoal
>>>>>
>>>>> Tenho um list com itemrenderer de um combobox
>>>>>
>>>>> Gostaria de saber se tem como acessar este item renderer
>>>>>
>>>>> valeu
>>>>>
>>>>
>>> --
>>> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
>>> Para enviar uma mensagem, envie um e-mail para [email protected]
>>> Para sair da lista, envie um email em branco para
>>> [email protected]
>>> Mais opções estão disponíveis em http://groups.google.com/group/flexdev
>>>
>>
>> --
>> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
>> Para enviar uma mensagem, envie um e-mail para [email protected]
>> Para sair da lista, envie um email em branco para
>> [email protected]
>> Mais opções estão disponíveis em http://groups.google.com/group/flexdev
>>
>>
>>
>> --
>> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
>> Para enviar uma mensagem, envie um e-mail para [email protected]
>> Para sair da lista, envie um email em branco para
>> [email protected]
>> Mais opções estão disponíveis em http://groups.google.com/group/flexdev
>> --
>> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
>> Para enviar uma mensagem, envie um e-mail para [email protected]
>> Para sair da lista, envie um email em branco para
>> [email protected]
>> Mais opções estão disponíveis em http://groups.google.com/group/flexdev
>>
>>
>> --
>> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
>> Para enviar uma mensagem, envie um e-mail para [email protected]
>> Para sair da lista, envie um email em branco para
>> [email protected]
>> Mais opções estão disponíveis em http://groups.google.com/group/flexdev
>>
>
> --
> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
> Para enviar uma mensagem, envie um e-mail para [email protected]
> Para sair da lista, envie um email em branco para
> [email protected]
> Mais opções estão disponíveis em http://groups.google.com/group/flexdev
>
>
> --
> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
> Para enviar uma mensagem, envie um e-mail para [email protected]
> Para sair da lista, envie um email em branco para
> [email protected]
> Mais opções estão disponíveis em http://groups.google.com/group/flexdev
>
--
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para
[email protected]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev