React native 如何使用*highlight函数*突出显示列表视图中的项目?

React native 如何使用*highlight函数*突出显示列表视图中的项目?,react-native,React Native,如果有人能举例说明如何使用突出显示功能,我们将不胜感激 文档中有:renderRow函数,(rowData,sectionID,rowID,highlightRow)=>renderable “通过调用highlightRow函数,当一行高亮显示时,可以通知ListView。当一行高亮显示时,上面和下面的分隔符将被隐藏。可以通过调用highlightRow(null)重置行的高亮显示状态。” 我读了一遍又一遍,然后我读了ListView的源文件,关于如何使用highlight函数,我仍然有一些线

如果有人能举例说明如何使用突出显示功能,我们将不胜感激

文档中有:renderRow函数,(rowData,sectionID,rowID,highlightRow)=>renderable “通过调用highlightRow函数,当一行高亮显示时,可以通知ListView。当一行高亮显示时,上面和下面的分隔符将被隐藏。可以通过调用highlightRow(null)重置行的高亮显示状态。”

我读了一遍又一遍,然后我读了ListView的源文件,关于如何使用highlight函数,我仍然有一些线索


highlightRow函数是否提供给开发人员在需要时调用它?如果后期需要,开发人员是否应该保存highlightRow的引用?调用highlightRow函数时应提供什么参数?

以下是突出显示列表视图所选项目的代码

ListView模板;
阵列适配器;
ArrayList templateNames=新的ArrayList();
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
lstTemplate=(ListView)findViewById(R.id.lstTemplates);
//将ArrayAdapter设置为ListView的适配器。
listAdapter=new ArrayAdapter(this,R.layout.simplerow,templateNames);
lstemplate.setAdapter(listAdapter);
listAdapter.notifyDataSetChanged();
lstemplate.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
公共无效onItemClick(AdapterView AdapterView、View视图、int i、long l){
if(i==0)return;//如果选择了empty,则不执行任何操作
对于(int j=0;j
我记得在这方面也遇到了挑战。我不确定这是不是最好的办法。。但下面是我如何处理突出显示我一年前编写的一些代码中的Activity类中的列表项:

公共类MyListActivity扩展活动{
列表视图;
MyListAdapter MyListAdapter;
View currentlySelectedListItemView=null;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u my\u列表);
myListAdapter=新的myListAdapter(此);
myListView=(ListView)findViewById(R.id.song\u列表);
myListView.setSelection(0);
myListView.setAdapter(myistAdapter);
myListView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
//取消高亮显示最后选定的项目
如果(currentlySelectedListItemView!=null){
currentlySelectedListItemView.setBackgroundColor(
Color.argb(0,0,0,0)
);
}
//突出显示选定的项目
view.setBackgroundColor(
getResources().getColor(R.color.blue));
view.getBackground().setAlpha(90);
currentlySelectedListItemView=视图;
}
});
}

@tennist,所有其他答案都是android代码。我希望您正在寻找react本机特定的解决方案。我也很想了解highlightRow函数的工作原理。如果您理解了,请让我知道。我怀疑它类似于
{rowHasChanged:(r1,r2)=>r1!==r2}
function one添加到数据源中,但我玩了一会儿,运气不好。不过,我确实想出了一个解决办法。下面是我如何修改_renderRow函数的

_renderRow: function(rowData: string, sectionID: number, rowID: number, highlightRow: func) {

var rowHash = Math.abs(hashCode(rowData));
var highlighted = {};
if(rowID == 5){
    highlighted = {color: 'red'};  
}

return (
  <TouchableHighlight onPress={() => console.log('[dbug] pressed', rowID)}>
    <View>
      <View style={styles.row}>
        <Text style={[styles.text,highlighted]}>
          {rowData + ' - ' + LOREM_IPSUM.substr(0, rowHash % 301 + 10)}
        </Text>
      </View>
    </View>
  </TouchableHighlight>
);
},

在这里,我武断地决定应该突出显示rowID 5,但你可以在那里实现对你的应用程序有意义的任何逻辑。

标题只是问如何突出显示一个项目,这个问题已经回答了好几次,但帖子显然需要使用一种称为“突出显示功能”的解决方案。鉴于我们真诚地回答了您的原始标题“如何在列表视图中突出显示项目”,我不确定前两个回答是否值得得a-1。我已经对orig.post进行了一些小的更新,以便其他人不会产生同样的误解。Cheerios
var highlighted = {};
if(rowID == 5){
    highlighted = {color: 'red'};  
}