2012-01-24 2 views
0

Я создаю CustomList. В каждой строке у меня есть изображение, некоторые текстовые поля и флажок. Но я не могу проверить и снять флажок. Я прошел через эту ссылку, но не могу решить мою проблему.Флажок в CustomListField в Blackberry

http://www.blackberry.com/knowledgecenterpublic/livelink.exe/fetch/2000/348583/800332/800505/800345/How_To_-_Create_a_ListField_with_check_boxes.html?nodeid=1165752&vernum=0

это добавит пункт в меню, чтобы изменить статус флажок. Я хочу нормальный режим checkbox. Пожалуйста, помогите

это мой код

class CustomList extends ListField implements ListFieldCallback 
{ 

public Vector rows; 
private Bitmap p1; 
int z = this.getRowHeight();  
LabelField task,task2,task3; 
CheckboxField checkbox[]= new CheckboxField[40]; 
int rowcount; 
public CustomList(int rowcount,String text1,double text2,String type,Bitmap p) 
{ 
    super(0, ListField.MULTI_SELECT); 
    this.rowcount= rowcount; 
    setRowHeight(z*3); 
    setEmptyString("Hooray, no tasks here!", DrawStyle.HCENTER); 
    setCallback(this);   
    p1 = p;  
    rows = new Vector(); 

    for (int x = 0; x < rowcount; x++) 
    { 
     checkbox[x]=new CheckboxField("",false,Field.USE_ALL_HEIGHT|Field.EDITABLE|Field.FIELD_VCENTER|Field.FOCUSABLE); 
    } 
    for (int x = 0; x < rowcount; x++) 
    { 
     TableRowManager row = new TableRowManager();    
     row.add(checkbox[x]); 
     row.add(new BitmapField(p1)); 
     task= new LabelField("abc"); 
     row.add(task); 
     task2=new LabelField("abc2"); 
     row.add(task2); 
     task3= new LabelField("abc3"); 
     row.add(task3); 
     rows.addElement(row); 
    } 
    setSize(rows.size()); 
} 
public void drawListRow(ListField listField, Graphics g, int index, int y,int width) 
{ 
    CustomList list = (CustomList) listField; 
    TableRowManager rowManager = (TableRowManager) list.rows.elementAt(index); 
    rowManager.drawRow(g, 0, y, width, list.getRowHeight()); 
} 

private class TableRowManager extends Manager 
{ 
    public TableRowManager() 
    { 
    super(0); 
    } 

// Causes the fields within this row manager to be layed out then 
// painted. 
    public void drawRow(Graphics g, int x, int y, int width, int height) 
    { 
     layout(width, height); 
     setPosition(x, y); 
     g.pushRegion(getExtent()); 
     subpaint(g); 
     g.setColor(0x00CACACA); 
     g.popContext(); 
    } 
    protected void sublayout(int width, int height) 
    { 
     // set the size and position of each field. 
    } 
    public int getPreferredWidth() 
    { 
     return UIConstants.SCREEN_WIDTH; 
    } 
    public int getPreferredHeight() 
    { 
     return getRowHeight(); 
    } 
} 
} 

Я пытаюсь реализовать ListField с флажками и я видел его код в базе знаний.

Но я хочу, чтобы, когда я нажимаю на флажке он должен быть проверен или непроверенной onlyand, когда я нажимаю на остальной части ряда, то есть где-нибудь, кроме флажка, то ничего не должно происходить без проверки флажка

Как Я могу это сделать ?? Или я должен делать что-то еще, чтобы сделать это .. Пожалуйста, предложите ..

+0

что вам нужно? Вы хотите проверить, что флажок установлен или нет? или что-нибудь; – alishaik786

+0

Не может помочь вам без кода. У меня нет хрустального шара .... но jejeje –

+0

@ alishaik786 эй привет .. Я упомянул, что хочу установить флажок, присутствующий в ListField. – Swati

ответ

0

Есть некоторые вещи, как это, где вы подменяете метод sublayOut() в таблице класса менеджера строки

protected void sublayout(int width, int height) 
{ 
    Field field = getField(0);    
       layoutChild(field, Display.getWidth(), Display.getHeight());    
       setPositionChild(field, 10, 20); 

Field field = getField(0);    
       layoutChild(field, Display.getWidth(), Display.getHeight());    
       setPositionChild(field, 10, 20); 

       //Set field   
       field = getField(1); 
       layoutChild(field, 120, fontHeight - 1);    
       setPositionChild(field, 70, 05); 

       // set the list field    
       field = getField(2);    
       layoutChild(field, 150, fontHeight +10);    
       setPositionChild(field, 70, 25); 

       // set the field    
       field = getField(3);    
       layoutChild(field, (Display.getWidth()/6)-12, fontHeight + 10);  
       setPositionChild(field, 70, 45);  
       setExtent(preferredWidth, getPreferredHeight()); 
} 

изменения обивка, как ваш требования.

И вы также можете проверить эту ссылку create a listField with check box. Thanks

+0

, что я сделал.Я могу добавить флажок, но не могу принять действие при щелчке по нему – Swati

+0

, которое вы должны сделать, используя метод click override navigationClick() или touchEvent() или fieldChanged(), чтобы получить эту функцию. – BBdev

+0

попробовал touchEvent() и fieldChanged(), но он не работает. – Swati

0
boolean checked = false; 
    Vector box1 = new Vector(); 
    for(int i=0;i<vector.size();i++){ 
    FriendsRequestObject co_vec = (FriendsRequestObject)vector.elementAt(i); 
    String name=co_vec.getSender_name(); 
    CheckboxField box = new CheckboxField(" "+name , checked, Field.USE_ALL_WIDTH){ 
     public void paint(Graphics graphics) { 
       graphics.setColor(Color.WHITE); 
       super.paint(graphics); 
      } 
     }; 
     box1.addElement(box); 
     box.setMargin(8, 0, 0, 5); 
     add(box); 

     } 

затем добавьте кнопку. На нажатии кнопки нажмите кнопку

  for(int d=0; d<box1.size(); d++){ 
      CheckboxField box=(CheckboxField)box1.elementAt(d); 
        if(box.getChecked()==true){ 
        FriendsRequestObject co_vec = (FriendsRequestObject)vector.elementAt(d); 
        String name_ = co_vec.getSender_name(); 
        Dialog.alert(name_);// here you can implement your code 
        } 
       } 
+0

Thanx Rez .. но у меня нет кнопки там .. мое приложение требует щелкнуть по флажку. – Swati

+0

Попробуйте проверить, установлен ли флажок или нет (может быть сделано в потоке). Если установлен флажок, сделайте то, что хотите. – Signare

+0

вот в чем проблема .. никаких событий не происходит на флажке. – Swati

 Смежные вопросы

  • Нет связанных вопросов^_^