1是你事件监听里面只是取得了数据而没有添加到tableView里面
2是你的Fifo类的fifoList产生的也有点问题
我把你这两个类改了,第一个类我不知道你的button在哪里,所以我在table上加了个双击事件,双击就会增加内容.
TableViewer1Class:
import org.eclipse.jface.window.*
import org.eclipse.jface.viewers.*
import org.eclipse.swt.*
import org.eclipse.swt.layout.*
import org.eclipse.swt.widgets.*
public class TableViewer1Class extends ApplicationWindow {
TableViewer tv
Fifo fifo1 = new Fifo("Name",new Integer(4),new Integer(5))
public TableViewer1Class() {
super(null)
}
public void run() {
setBlockOnOpen(true)
open()
Display.getCurrent().dispose()
}
protected void configureShell(Shell shell) {
super.configureShell(shell)
shell.setText("TableViewer实例")
shell.setSize(400, 200)
}
protected Control createContents(Composite parent) {
Composite composite = new Composite(parent, SWT.NONE)
composite.setLayout(new GridLayout(1, false))
//定义一个TableViewer对象
tv = new TableViewer(composite, SWT.FULL_SELECTION)
// 设置Table
Table table = tv.getTable()
table.setLayoutData(new GridData(GridData.FILL_BOTH))
// 定义表中的列
TableColumn Col1 = new TableColumn(table, SWT.LEFT)
Col1.setText("姓名")
// 设置列宽度
Col1.setWidth(60)
TableColumn Col2 = new TableColumn(table, SWT.LEFT)
Col2.setText("第一个数")
Col2.setWidth(60)
TableColumn Col3 = new TableColumn(table, SWT.LEFT)
Col3.setText("第二个数")
Col3.setWidth(60)
// 显示表头
table.setHeaderVisible(true)
// 显示表格线
table.setLinesVisible(true)
tv.setContentProvider(new FifoIStructuredContentProvider())
tv.setLabelProvider(new FifoITableLabelProvider())
//tv.setInput(Fifo.getFifos())
tv.refresh()
//这是button的动作:
table.addListener(SWT.MouseDoubleClick, new Listener(){
public void handleEvent(Event event) {
tv.setInput(Fifo.getFifos())
tv.refresh()
}
})
return composite
}
public static void main(String[] args) {
new TableViewer1Class().run()
}
}
2 Fifo:
import java.util.ArrayList
import java.util.List
public class Fifo {
private String name// 名称
private Integer comeTime// 到来时间
private Integer needTime// 运行时间
private Integer starttime// 开始时间
private Integer stoptime// 结束时间
private Integer state// 状态
static List<Fifo>fifoList = new ArrayList<Fifo>()
public Fifo(String name, Integer cometime, Integer needime) {
this.name = name
this.comeTime = cometime
this.needTime = needime
}
public String getName() {
return name
}
public void setName(String name) {
this.name = name
}
public Integer getStarttime() {
return starttime
}
public void setStarttime(Integer starttime) {
this.starttime = starttime
}
public Integer getStoptime() {
return stoptime
}
public void setStoptime(Integer stoptime) {
this.stoptime = stoptime
}
public Integer getState() {
return state
}
public void setState(Integer state) {
this.state = state
}
public static List<Fifo>getFifos() {
Fifo something = new Fifo("name", new Integer(3), new Integer(5))
fifoList.add(something)
return fifoList
}
public Integer getComeTime() {
return comeTime
}
public void setComeTime(Integer comeTime) {
this.comeTime = comeTime
}
public Integer getNeedTime() {
return needTime
}
public void setNeedTime(Integer needTime) {
this.needTime = needTime
}
}
1.新建TableViewCell类,继承父类为UITableViewCell1.1 "TableCell.h"
#import UIKit.h>
/**
* 房间桌子显示结构
* /
@interface TableCell : UITableViewCell {
UILabel *tableNoLable// 桌子号
UIImageView *tableImageView// 桌子图片
UIImageView *tableStateImageView// 桌子状态图片
}
@property (nonatomic ,retain) IBOutlet UILabel *tableNoLable// 桌子号
@property (nonatomic ,retain) IBOutlet UIImageView *tableImageView// 桌子图片
@property (nonatomic ,retain) IBOutlet UIImageView *tableStateImageView// 桌子状态图片
1.2 TableCell. m
#import "TableCell.h"
@implementation TableCell
@synthesize tableNoLable// 桌子号
@synthesize tableImageView// 桌子图片
@synthesize tableStateImageView// 桌子状态图片
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
// Initialization code
}
return self
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated]
// Configure the view for the selected state
}
- (void)dealloc {
[tableNoLable release]
[tableImageView release]
[hand3ImageView release]
[super dealloc]
}
@end
1.3 布置布局文件( xib 文件)指明 class 为自己定义的 tabelcellview
new 一个Empty Xib文件,其中不包含view, 在libriary中拖一个UITableCell到两个图标的框中,双击cellview,指明class为cell.m文件,开始编辑
2. 页面中在 tableView 中加载自己的 cell
#import "TableCell.h"
// 设置房间桌子数
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
[Util showLog:@"numberOfRowsInSection"]
return g_Room.wTableCount
}
// 设置单元格的高度
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
[Util showLog:@"heightForRowAtIndexPath"]
return kTableViewRowHeight
}
// 设置单元个样式
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
[Util showLog:@"cellForRowAtIndexPath start"]
static NSString *tableCellIdentifier = @"TableCellIdentifier"
TableCell *cell = (TableCell *)[tableView dequeueReusableCellWithIdentifier:tableCellIdentifier]
[Util showLog:@"TableCellIdentifier"]
if(cell == nil){
NSArray *nib = [[NSBundle mainBundle]loadNibNamed:@"TableCell" owner:self options:nil]
for(id oneObject in nib){
if([oneObject isKindOfClass:[TableCell class]]){
cell = (TableCell *)oneObject
//***** 自己设计每个 cell 的内容,此函数会回调 table 的行数次,行数为 numberOfRowsInSection:(NSInteger)section 函数指定
// 显示桌子号码
NSUInteger row = [indexPath row] + 1
NSString *str =[NSString stringWithFormat:@"%d",row]
cell.tableNoLable.text = [[@" 第 " stringByAppendingString:str] stringByAppendingString:@" 桌 "]
[Util showLog:@"tableNoLable"]
if(deskshowFlg){
// 获取要绘画的桌子信息
Desk *tempDesk = [g_DeskArray objectAtIndex:[indexPath row]]
}
}
}
在UITableView中插入或者删除指定的行(或者节)使用的是如下几个API:insertRowsAtIndexPath: withRowAnimation: 在指定位置插入行
deleteRowsAtIndexPath: withRowAnimation: 删除指定行
insertSections: withRowAnimation: 在指定位置插入节
deleteSections: withRowAnimation: 删除指定节
调用以上API之前,必须先调用beginUpdates,插入/删除数据完成后再调用endUpdates。
-(IBAction)addRows:(id)sender{
NSMutableArray *indexPaths = [[NSMutableArray alloc] init]
for (int i=0i<3i++) {
NSString *s = [[NSString alloc] initWithFormat:@”hello %d”,i]
[datas addObject:s]
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:i inSection:0]
[indexPaths addObject: indexPath]
}
[self.tableView beginUpdates]
[self.tableView insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewScrollPositionNone]
[self.tableView endUpdates]
}
-(IBAction)delRows:(id)sender{
NSMutableArray *indexPaths = [[NSMutableArray alloc] init]
[datas removeObjectAtIndex:0]
[indexPaths addObject:[NSIndexPath indexPathForRow:0 inSection:0]]
[self.tableView beginUpdates]
[self.tableView deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationNone]
[self.tableView endUpdates]
}
需要注意的是,调用insert函数时,需保证数据源添加的记录数要与你想插入的行的总数一致,如上面的例子中,想要插入的记录有3条,插入位置分 别为1,2,3,则对应的indexpPaths数组的元素总数为3,数组元素为一个NSIndexPath对象,通过它我们指定了记录的插入位置。删除 数据也是相同的道理。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)