如何调用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