嗨,我创建了一个 CustomListField 并实现了“drawListRow”方法来连续绘制图像、文本和另一个图像。现在,当我单击列表时,右侧的图像应该会消失。当我再次单击列表时,它应该再次出现。这个怎么做。请张贴代码。
问问题
140 次
1 回答
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
}
}
}
于 2011-11-22T23:31:42.927 回答