如何调用ListView.renderRow()的highlightRow?
我似乎无法弄清楚如何使用highlightRow
属性ListView的renderRow。
ListView.renderRow文档状态...
(rowData,sectionID,rowID,highlightRow)=>可呈现
从数据源及其ID中获取数据输入,并返回可呈现组件以呈现为行。 默认情况下,数据正是放入数据源的数据,但也可以提供自定义提取器。 通过调用highlightRow函数可以在行高亮时通知ListView。 当一行被突出显示时,上面和下面的分隔符将被隐藏。 可以通过调用highlightRow(null)来重置行的突出显示状态。
我想呼吁关注该行......
通过调用highlightRow函数可以在行高亮时通知ListView。
当我console.log(rowData, sectionID, rowID, highlightedRow)
,我可以看到console.log(rowData, sectionID, rowID, highlightedRow)
是一个函数具有以下签名...
function(sectionID,rowID){
this.setState({highlightedRow:{sectionID:sectionID,rowID:rowID}});
}
这是在源代码中调用的(参见this.onRowHighlighted
)...
<StaticRenderer
key={'r_' + comboID}
shouldUpdate={!!shouldUpdateRow}
render={this.props.renderRow.bind(
null,
dataSource.getRowData(sectionIdx, rowIdx),
sectionID,
rowID,
this.onRowHighlighted
)}
/>;
任何人都可以提供一个示例如何正确使用highlightRow?
在调查了ListView代码中highlightedRow
状态属性之后,我发现它仅用于计算传递给renderSeparator
方法的adjacentRowHighlighted
参数。
(sectionID,rowID,adjacentRowHighlighted)=>可呈现
如果提供了可呈现组件,则在每行下面将呈现为分隔符,但如果下面有节标题,则不会显示最后一行。 取上面一行的sectionID和rowID,以及它的相邻行是否突出显示。
所以,我相信highlightRow
的唯一用例是渲染高亮行的不同分隔符。 这是一个简单的例子,它根据adjacentRowHighlighted
参数改变分隔符背景颜色。
<ListView
renderRow={(rowData, sectionID, rowID, highlightRow) {
return (
<View>
<TouchableOpacity
onPress={() => highlightRow(sectionID, rowID)
>
{row content here}
</TouchableOpacity>
</View>
);
}}
renderSeparator={(sectionID, rowID, adjacentRowHighlighted) => {
return (
<View
key={`${sectionID}-${rowID}`}
style={{
height: 1,
backgroundColor: adjacentRowHighlighted ? 'blue' : 'red',
}}
/>
);
}}
/>
链接地址: http://www.djcxy.com/p/90791.html
上一篇: How do I Call highlightRow of ListView.renderRow()?
下一篇: R: Calculate sill, range and nugget from a raster object