在Flex中,我可以创建一个ItemRenderer来表示列表DataProvider中的每个项目,但是如何通过DataProviders对象来访问ItemRenderer的实例?像myList.getItemRenderer(dp.getItemAt(10));
如何从DataProvider对象获取Flex Spark List的ItemRenderer?
回答
public function getItemRenderer(list:List, item:Object):ItemRenderer
{
var dataGroup:DataGroup = list.dataGroup;
var n:int = dataGroup.numElements;
for (var i:int = 0; i < n; i++)
{
var renderer:ItemRenderer = dataGroup.getElementAt(i) as ItemRenderer;
if (renderer && renderer.data == item)
return renderer;
}
return null;
}
非常感谢,我需要这样的东西。 – ccsakuweb 2011-12-26 21:25:04
为了使这一直工作,您需要将List的useVirtualLayout设置为false。这样,所有ItemRenderer都会被创建,即使它们不可见。在useVirtualLayout为true的情况下,一些ItemRenderer只会在可见时被创建。 – DoomGoober 2014-10-28 23:34:00
东西通过这种方法,你不能渲染是可视区域外,还会有很多其他的问题。
你是对的。我没有选择以前的答案,但很好找到一个解决方案。 – 2012-04-30 12:05:47
由于Flex SDK不支持数据直接呈现器访问,因此对于此问题没有“正确”答案。 – 2013-02-10 06:25:11
如果您需要更改项呈示器的行为方式,请更改导致行为的数据。
var items:ArrayCollection = this.dataProvider as ArrayCollection;
var newItems:ArrayCollection = new ArrayCollection();
if (items.length > 0) {
for (var i:int = 0; i < items.length; i++) {
var item:Object = items[i] as Object;
if (!item.editMode) {
item.editMode = true;
} else {
item.editMode = false;
}
newItems.addItem(item);
}
}
this.dataProvider = null;
this.dataProvider = newItems;
这是一个简单的示例,其中I标记的项目可删除,并且呈现器根据数据更改而发生更改。对于更大的数据集,我知道这可能会有点慢,但是它会给你以后的控制权。
如果您需要更改一个渲染器,只需修改dataProvider或dataGroup中相应对象上的数据即可。
var item:Object = this.getItemAt(index);
我知道这是一个古老的线程,但也许这将帮助别人:
var item:ItemRenderer = list.dataGroup.getElementAt(0) as ItemRenderer;
这会给你的itemRenderer,如果你有一个自定义的IR那么就使用这个类和演你的集合。
- 1. Spark List ItemRenderer选择状态问题
- 2. 更改contentBackgroundColor of List with itemRenderer
- 3. Flex为一个itemRenderer设置dataProvider
- 4. 从servlet获取对象flex
- 5. 如何从List C#中获取对象?
- 6. 如何在Flex 4.5中将本地XML文件用作Spark List控件的DataProvider?
- 7. 自定义外部itemRenderer正在从dataProvider接收空对象
- 8. flex spark datagrid itemrenderer获取所有者组件
- 9. Flex移动Spark列表*条件* ItemRenderer
- 10. Flex CheckBox ItemRenderer不绑定到对象?
- 11. Flex:将dataProvider链接到DataGrid中的自定义itemRenderer
- 12. Dynamic DataGrid中的动态Spark DropDownList ItemRenderer
- 13. 正在更新itemrenderer dataprovider
- 14. Flex:如何传递GridItemRenderer DropDownList的dataProvider?
- 15. 通过flex列表项获取itemrenderer
- 16. 如何获取Flex Spark List中位于视口顶部的Item Renderer?
- 17. 限制Flex Spark Spark DataGrid ItemRenderer的数据到列
- 18. 在itemRenderer的操纵数据对象 - Adobe Flex的4
- 19. Flex ItemRenderer
- 20. 如何获取DateField上的选定日期Adobe Flex Datagrid ItemRenderer
- 21. 如何从Spark Dataframe中的Row对象获取值?
- 22. 从repeater对象获取文本 - flex
- 23. 刷新每个项目的itemRenderer List组件的Flex
- 24. 从Flex 4删除默认样式(spark)ItemRenderer
- 25. 从itemRenderer获取Datagrid中的selectedIndex
- 26. Flex Dropdownlist itemrenderer问题?
- 27. Actionscript中的Spark List:在构造器中传递Layout&itemRenderer
- 28. flex词典dataProvider?
- 29. 用的itemRenderer Flex的列表获取所选值
- 30. 如何从CheckboxTreeViewer获取对象/对象?
由于默认情况下,Flex列表将循环使用其项目渲染器,因此您无法可靠地访问给定数据对象的项目渲染器。如果数据对象滚动到列表的可视区域外,甚至可能不存在与该数据对象相关联的呈现器。你试图完成什么? – 2010-10-26 21:07:45