react native listview组件 探索记录
来源:互联网 发布:知乎 小程序 ui 框架 编辑:程序博客网 时间:2024/06/05 19:15
测试完成效果内容
1、动态改变数据源问题,通过利用state中声明属性 dataSource,在方法中通过 this.setState({dataSource : 将要设置的值}) ,将值设为 this.state.dsData.cloneWithRows(setData) ,通过方法获取的形式
由此可以看出 state中声明属性的重要性,且setState后会自动刷新页面
2、点击每一行高亮问题 ,引用TouchableOpacity控件
3、点击事件响应问题 ,每个Item中设置事件响应,并可以传递数据
下一节解决下面问题
//每个item 自定义布局,并和数据绑定问题
//头部 尾部自定义问题
//刷新 和 下拉加载 问题
//rowid调试debug可以显示值,但打印显示object 的情况需要解决
import React,{ Component } from 'react';
import {
Appregistry,
StyleSheet,
View,
ListView,
PixelRatio,
Text,
TouchableOpacity,
Image
} from 'react-native';
var THUMB_URLS = [
require('./imgs/ic_launcher.png'),
];
class EligenListView extends Component{
constructor(props)
{
super(props);
//为变量赋初始值
// static defaultProos = {
// dataSource : [],
// };
var ds = new ListView.DataSource(
{rowHasChanged:(r1,r2) => {return r1 != r2;}
});
//声明变量
this.state = {
//声明属性,并赋默认值
//
dsData: ds,
// dataSource: ds.cloneWithRows(['row1','row2','row1','row2','row2','row1','row2','row2','row1','row2','row2','row1','row2','row2','row1','row2','row2','row1','row2']),
dataSource: ds.cloneWithRows(this._genRows()),
};
}
_genRows() {
var dataBlob = [];
for (var ii = 0; ii < 15;ii++) {
dataBlob.push('单元格 ' + ii);
}
return dataBlob;
}
_dynamicGenRows() {
var dataBlob = [];
for (var ii = 0; ii < 15;ii++) {
dataBlob.push('单元格动态值 ' + ii);
}
return dataBlob;
}
// _setStateDataSource(rowData,sectionID,rowID)
// {
// var setData = this._dynamicGenRows();
// this.setState({ dataSource : this.state.dsData.cloneWithRows(setData)});
// }
_setStateDataSource()
{
var setData = this._dynamicGenRows();
this.setState({ dataSource : this.state.dsData.cloneWithRows(setData)});
}
_itemPress(rowData,sectionID,rowID)
{
alert("itemPress : " + rowData + " rowID : " + rowID );
// this.setStateDataSource();
this._setStateDataSource();
}
_renderRow(rowData,sectionID, rowID)
{
var imgSource = THUMB_URLS[0];
return (
<TouchableOpacity >
<View>
<View style={styles.rowsingle}>
<Image style={styles.thumbsingle} source={imgSource} />
<Text style={{flex:1,fontSize:16,color:'blue'}} onPress={this._itemPress.bind(this,rowData,rowID)}>
{rowData + '我是测试行号哦~'}
</Text>
</View>
</View>
</TouchableOpacity>
);
};
render(){
return(
<ListView
dataSource = {this.state.dataSource}
renderRow={this._renderRow.bind(this)}
onEndReached={this.onEndReached.bind(this)}
onEndReachedThreshold={1}
pageSize={15}
>
</ListView>
);
};
//函数自带post
renderRow(post)
{
alert('post ' + post);
return ( <Text >{post}</Text>);
};
//函数自带event
onEndReached(event)
{
alert('onEndReached ');
}
};
var styles = StyleSheet.create(
{
container:
{
flex:1,
},
rowsingle: {
flexDirection: 'row',
justifyContent: 'center',
padding: 10,
backgroundColor: '#F6F6F6',
},
thumbsingle: {
width: 50,
height: 50,
},
//如果对list进行设置 wrap 换行 请 justifyContent为 space-around 的时候则是容器均分,类似gridview
list: {
marginTop:5,
justifyContent: 'space-around',
flexDirection: 'row',
flexWrap: 'wrap'
},
row: {
justifyContent: 'center',
padding: 5,
margin: 3,
width: 85,
height: 85,
backgroundColor: '#F6F6F6',
alignItems: 'center',
borderWidth: 1,
borderRadius: 5,
borderColor: '#CCC'
},
thumb: {
width: 45,
height: 45
},
text: {
flex: 1,
marginTop: 5,
fontWeight: 'bold'
},
});
// Appregistry.registerComponent('eligenListView',() => eligenListView);
export default EligenListView;
//动态赋值
// _setDataSource(ds)
// {
// this.setState({datasource:ds});
// };
//
// contentContainerStyle = {styles.list}
//数据源 dataSource = {this.state.dataSource}
//函数
参考链接
http://blog.csdn.net/developer_jiangqq/article/details/50635659
- react native listview组件 探索记录
- React Native 组件 ListView
- React Native的组件ListView
- react native组件学习之listview
- (十)React Native---ListView 组件
- React-Native 初学之组件生命周期记录
- react native 入门探索
- 《React-Native系列》16、 RN组件之ListView
- 《React-Native系列》16、 RN组件之ListView
- React Native 学习笔记(八)-- ScrollView & ListView组件
- React Native下拉刷新组件 ios 平台 支持ScrollView,ListView
- React-Native-ListView、ListViewItem(子、父组件互相传值)
- 《React-Native系列》16、 RN组件之ListView
- 《React-Native系列》16、 RN组件之ListView
- 【React Native开发】React Native控件之ListView组件讲解以及最齐全实例(19)
- React-native 常见问题:Warning 当使用组件 react-native-gifted-listview
- react-native listView 分节
- React-Native 中的ListView
- C语言printf和scanf--c语言学习笔记7
- LayoutInflater 是怎么把xml添加到decorview?
- 简单的汇率转换工具---初试AJAX
- 一、vault
- ANR源码分析之InputDispatcher Timeout
- react native listview组件 探索记录
- MYSQL外键(Foreign Key)的使用
- 撤销(undo)和重做(redo)的C++完美实现
- ajax 跨域 headers JavaScript ajax 跨域请求 +设置headers 实践
- 给定三边判断是否是直角三角形
- BeagleBone Green Wireless WIFI configuration
- hadoop梳理之安装
- 数学分析八讲笔记(二)
- 存储过程+调用存储过程+无/带参的存储过程+in参数+out参数+int out参数+为参数设置默认值