![]() |
|
||||||||||
|
|||||
|
Регистрация: Jun 2008
Сообщений: 24
|
Здравствуйте всем!
![]() У меня появилась проблема, которую я не могу решить уже третий день. Мне надо создать кастомный ItemRenderer для List. Там надо чтобы в каждой строке был RadioButton и несколько CheckBox. "Галочки" пока проблем не вызвали, но радио батон изначально создал проблему, так как они должны быть в одной группе, но это решилось как-то. Создало проблему то, что я не ожидал. Я не могу к CheckBox применить CSS из внешнего файла. Вроде все нормально его загружаю но когда я пытаюсь приметьи СSS к нему, плейер выдает ошибку. Если кто-нибудь знает как это можно реализовать проще, без написания собвенного класса, я буду вам весьма признателен. Спасибо. Вот код класса: import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.text.StyleSheet;
import mx.controls.CheckBox;
import mx.controls.Label;
import mx.controls.RadioButton;
import mx.controls.listClasses.BaseListData;
import mx.controls.listClasses.ListBase;
import mx.controls.listClasses.ListItemRenderer;
import mx.events.ListEvent;
public class RadioButtonListItemRenderer extends ListItemRenderer
{
private var checkBoxViseble:CheckBox;
private var radioButton:RadioButton;
private var checkBoxSort:CheckBox;
private var titleLabel:Label;
private var styleSheet:StyleSheet;
private var request:URLRequest;
private var loader:URLLoader;
private var styleMan:Object;
public function RadioButtonListItemRenderer()
{
this.styleSheet = new StyleSheet();
this.request = new URLRequest("style.css");
this.loader = new URLLoader();
this.loader.addEventListener(Event.COMPLETE,OnLoadCSS);
this.loader.load(request);
}
private var list:ListBase;
override protected function createChildren():void
{
super.createChildren();
this.checkBoxViseble = new CheckBox();
this.radioButton = new RadioButton();
this.checkBoxSort = new CheckBox();
this.titleLabel = new Label();
this.addChild(this.checkBoxViseble);
this.addChild(this.radioButton);
this.addChild(this.checkBoxSort);
this.addChild(this.titleLabel);
}
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
super.updateDisplayList(unscaledWidth, unscaledHeight);
this.checkBoxViseble.x = 3;
this.checkBoxViseble.y = this.height / 2 - this.radioButton.height / 2;
this.radioButton.x = 25;
this.radioButton.y = this.height / 2 - this.radioButton.height / 2;
this.checkBoxSort.x = 45;
this.checkBoxSort.y = this.height / 2 - this.radioButton.height / 2;
this.checkBoxSort.visible = false;
this.label.x = 65;
}
private function OnLoadCSS(event:Event):void
{
this.styleSheet.parseCSS(loader.data);
styleMan = this.styleSheet.getStyle(".visibleCBStyle");
//проблема собсвенно возникает здесь.
}
override public function set listData(value:BaseListData):void
{
super.listData = value;
if (value.owner is ListBase)
{
if (this.list)
{
this.list.removeEventListener(ListEvent.CHANGE, ownerChangeHandler);
}
this.list = value.owner as ListBase;
}
}
private function ownerChangeHandler(event:ListEvent):void
{
this.radioButton.selected = (this.data != null && this.data == this.list.selectedItem);
}
}
|
|
|||||
|
Регистрация: Jun 2008
Сообщений: 24
|
Может если кто знает как можно сделать кастомный ItemRenderer без AS класса, с использованием RadioButton - то это тоже будет решеним данной проблемы.
|
|
|||||
|
Регистрация: Apr 2007
Сообщений: 1,369
|
http://blog.flexexamples.com/2008/01...derer-in-flex/ - тут посмотрите, может на мысль наведет.
__________________
john |
|
|||||
|
Регистрация: Jun 2008
Сообщений: 24
|
Спасибо большое за ссылку, но только там немного другое. Вся проблема в том что радио батон должен принадлежать к какой нибудь группе, в которой может быть выделен только один переключатель. Я не могу этого добиться при создании компонента как mxml.
![]() |
|
|||||
|
Регистрация: Aug 2007
Сообщений: 467
|
ItemRenderer и в нем загрузка CSS — это уже полный ... т.е. неправильно!
__________________
Лучше быть умным и иногда делать глупости, чем глупым и постоянно умничать! |
|
|||||
|
Регистрация: Jun 2008
Сообщений: 24
|
Я согласен полностью что это не хорошо, но так как у меня пока нет другога выхода, приходится делать так, хотя бы как нибудь. Потому что я не знаю что делать...
|
|
|||||
|
Регистрация: Jun 2008
Сообщений: 24
|
Спасибо Молекула, та статья навела меня на то что мне надо было. Только не сразу, потому что я представлял себе это несколько иначе.
|
|
|||||
|
Регистрация: Apr 2007
Сообщений: 1,369
|
Гы ) Я вообще статью перепутал, ну да ладно.
__________________
john |
![]() |
![]() |
Часовой пояс GMT +4, время: 11:39. |
|
|
« Предыдущая тема | Следующая тема » |
|
|