olá a todos,
peguei este código na internet a adaptei ao meu sistema para TableItem.
Mas ao selecionar uma linha na tabela com toque, a linha selecionada vai somente para baixo.
Com este problema não consigo dar foco na linha desejada.
O Problema esta em pointerPressed.
Preciso mesmo resolver este problema para finalizar o sistema.
Obrigado.
[code]class SkidletTableItem extends TableItem {
protected double rowBias = -1;
protected double rowCount = -1;
public SkidletTableItem(Display display, String title) {
super(display, title);
}
public SkidletTableItem(Display display, String title, TableModel model) {
super(display, title, model);
}
public SkidletTableItem(Display display, String title, TableModel model, ColorSchema colorSchema) {
super(display, title, model, colorSchema);
}
public void setModel(TableModel model) throws IllegalArgumentException {
rowBias = -1;
rowCount = -1;
super.setModel(model);
}
public void tableModelChanged(TableModel changedModel) {
rowBias = -1;
rowCount = -1;
super.tableModelChanged(changedModel);
}
protected void pointerPressed(int x, int y) {
selectRow((int) calculateRow(y));
super.pointerPressed(x, y);
}
protected void selectRow(int row) {
// Do not select a row
if (row == getSelectedCellRow() || row > rowCount - 1 || row != getSelectedCellRow()) {
traverse(Canvas.DOWN, 0, 0, new int[]{0, 0, 0, 0});
}
}
protected double calculateRow(double y) {
// Accomodate for titles and labels
if (rowBias == -1) {
rowBias = 0;
if (this.getTitle() != null) {
rowBias++;
}
if (this.getLabel() != null) {
rowBias++;
}
}
int row = -1;
while (rowCount == -1) {
traverse(Canvas.DOWN, 0, 0, new int[]{0, 0, 0, 0});
if (row == getSelectedCellRow()) {
rowCount = getSelectedCellRow() + 1;
}
row = getSelectedCellRow();
}
double h = getMinContentHeight();
double retVal = ((rowCount + rowBias) * y) / h;
return retVal + 0.25 - rowBias; // Round up slightly
}
}[/code]