2011-11-22 63 views
1

嗨,我創建了一個CustomListField並實現了「drawListRow」方法在一行中繪製圖像,文本和另一個圖像。現在當我點擊列表時,右側的圖像應該消失。 當我再次點擊它應該再次出現的列表。這個怎麼做。請發佈代碼。如何在黑莓中點擊黑莓中的圖片時顯示和隱藏圖片?

+1

您好,歡迎,我很遺憾地告訴你,我們沒有「後的代碼」。但是,如果您向我們提供您嘗試過的產品,請告訴您可以修復或修復的內容。感謝您編輯您的帖子。 – Drahakar

+0

您可以用點擊事件中的透明圖像替換圖像。 –

+0

你能告訴我怎麼做。我是這個黑莓的新手。 – chaitu2408

回答

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 
     } 

    } 

} 
+0

嗨,我試過這個,但它不工作 – chaitu2408

+0

什麼具體不工作?你有錯誤嗎?請發佈您的更新代碼。 – donturner