如何在黑莓中单击它时显示和隐藏列表中的图像?

时间:2011-11-22 06:00:25

标签: blackberry custom-lists

我创建了一个CustomListField并实现了“drawListRow”方法来绘制一行中的图像,文本和另一个图像。现在,当我点击列表时,右侧的图像应该消失。 当我再次点击列表时,它应该再次出现。这该怎么做。请发布代码。

1 个答案:

答案 0 :(得分:1)

您将不得不跟踪已点击的行(因此具有隐藏的图像),哪些没有。我会使用一系列布尔来做到这一点。

覆盖CustomListField中的keyDown方法,并使用getSelectedIndex确定当前选择的行。

在drawListRow方法中注意ListField作为参数传递,将其强制转换回CustomListField并实现一个名为isRowClicked(int index)的新方法,该方法返回是否单击该行,因此应该使用或不使用右手图像。

代码大致如下:

public class CustomListField extends ListField implements ListFieldCallback{

    private static final int TOTAL_ROWS = 10; //total number of rows in list
    private boolean[] clickedRows = new boolean[TOTAL_ROWS];

    public CustomListField(){
        //do all your instantiation stuff here
    }

    public boolean keyDown(int keycode, int time){

        int currentlySelectedRow = getSelectedIndex();

                //toggle the state of this row
                clickedRows[currentlySelectedRow] = !clickedRows[currentlySelectedRow];

        //consume the click
        return true;
    }

    public boolean isRowClicked(int index){
        return clickedRows[index];
    }

    public void drawListRow(ListField listField, Graphics graphics, int index,
        int y, int width) {

        CustomListField customListfield = (CustomListField) listField;

                //check whether this row is clicked 
                if(customListfield.isRowClicked(index)){

            //draw the state when the row is clicked

        } else {

            //draw the row when the row is not clicked
        }

    }

}