2016-03-15 1 views
7

ListViewのrenderRow属性highlightRowの使い方を理解できないようです。ListView.renderRow()のhighlightRowをどのように呼び出すのですか?

ListView.renderRow Documentation

状態...

(rowData、セクションID、ROWID、highlightRow)=>レンダリング

は、データ・ソースとそのIDSからのデータ入力を受け取り、レンダリングを返すべきコンポーネントを行としてレンダリングします。デフォルトでは、データはデータソースに格納されたデータとまったく同じですが、カスタム抽出ツールを提供することも可能です。 highlightRow関数を呼び出して行が強調表示されているときに、ListViewに通知することができます。行が強調表示されると、上下の区切り文字は非表示になります。ハイライトされた行の状態は、highlightRow(null)を呼び出すことによってリセットできます。

行が関数を呼び出すhighlightRowによって強調されているとき、私はラインに注意を喚起したいのですが...

ListViewコントロールを通知することができます。 I console.log(rowData, sectionID, rowID, highlightedRow)、IはhighlightedRowは、以下のシグネチャを持つ関数であることを確認することができ

...

here in the source codeから呼び出され
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の使い方の例を提供できますか?

答えて

4

ListViewのコードでhighlightedRow国有財産を調査した後、私はそれだけでrenderSeparatorメソッドに渡されadjacentRowHighlightedパラメータを計算するのに使われていることを見てきました。

(セクションID、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', 
     }} 
     /> 
    ); 
    }} 
/> 
+0

@halib私は間違いなくあなたが正しい軌道に乗っていると思いますが、私はあなたの事例を得ることができませんでした。私は掘り下げていますが、実際にそれが実際に働いているかどうかを確認するために偶然にこれをテストしましたか? –

+0

ところで、私は今どこにいるのか分かりません。もしあなたがそれをフォークし、私がそれを働かせるのを助けるなら、素晴らしいことになるでしょう。https://rnplay.org/apps/FW4-Aw –

+0

@ChrisGeirman、問題はセパレータの幅にあります。行とリストビューの幅が定義されていないため計算できません。幅:200; ListViewのスタイルはそれを修正します:https:// rnplay。org/apps/Bs9wZQ – halilb

関連する問題