// 使用FlatList实现多选
private showFlatListMulti() {
let dataList = this.state.data
if (dataList && dataList.length) {
const extraUniqueKey = () => Math.random().toString();
const renderAssertItem = (render: ListRenderItemInfo<any>) => {
return (
<View>
<RadioItem
key={render.index}
style={{ height: 45 }}
checked={render.item.checkedflag}
onChange={(event: any) => {
let oData: any = this.state.data;
let oNew: any[] = [];
oData.map((fItem: any) => {
// 将当前选中标记取反
if (render.item.promotionEvaId === fItem.promotionEvaId) {
fItem.checkedflag = !fItem.checkedflag;
}
oNew.push(fItem);
});
this.setState({ data: oNew });
}}
>
{/* 自定义控件 */}
<View style={{ flex: 1, paddingVertical: 0, flexDirection: 'row' }}>
<SelSuggestView
bidderName={render.item.promotionEvaName}
/>
</View>
</RadioItem>
</View>
)
}
return (
<FlatList
//数据绑定
data={dataList}
//列表显示控件
renderItem={renderAssertItem}
keyExtractor={extraUniqueKey}
/>
);
}
}
// 使用RadioItem实现多选 为每条数据绑定一个标记(checkedflag)然后每次点击更新这个值 类似原生多选的实现
private showMapCheck() {
let dataList: any[] = this.state.data
if (dataList && dataList.length) {
return dataList.map((item, index) => {
return (
<RadioItem
key={index}
style={{ height: 70 }}
checked={item.checkedflag}
onChange={(event: any) => {
let oData: any = this.state.data;
let oNew: any[] = [];
oData.map((fItem: any) => {
// 将当前选中标记取反
if (item.promotionEvaId === fItem.promotionEvaId) {
fItem.checkedflag = !fItem.checkedflag;
}
oNew.push(fItem);
});
this.setState({ data: oNew });
}}
>
{/* 自定义控件 */}
<View style={{ flex: 1, paddingVertical: 15, flexDirection: 'row' }}>
<SelSuggestView
bidderName={item.promotionEvaName}
/>
</View>
</RadioItem>
);
})
}
}