TableItem: problemas touch screen

0 respostas
S

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.

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
    }

}
Criado 25 de março de 2011
Respostas 0
Participantes 1