LWUIT Пользовательский расширяемый компонент в элементе списка

В моем проекте я использую lwuit List(main) с пользовательским рендерером.

Я следую за целью реализации расширяемого элемента списка, который разворачивает / сворачивает другой список (обернутый).

Изначально я создал контейнер с кнопками и списками (без поведения свертывания / развертывания), но когда я использовал его в основном списке, я столкнулся с проблемой невозможности выбора элементов в свернутом списке.

Итак, я буду рад, если вы поможете мне с двумя проблемами:

  1. Можно ли это исправить с помощью стандартных инструментов lwuit?
  2. Как я могу скрыть свой свернутый список, нажав HeaderBar (видимость просто скрывает содержимое, но оставляет большой пробел)?

Изображения для наглядности (ListItem - элемент основного списка, который не отображается на изображении):

развернуть вид

свернутый вид

private void fillForm() {
    mF = new Form();
    fillList1();
    fillList2();
    fillList();
    mF.show();
}

private void fillList() {
    mList = new CList();
    mList.setRenderer(new CRenderer());     
    mList.addItem(c1);
    mList.addItem(c2);
    mF.addComponent(c1);
    mF.addComponent(c2);
}

private void fillList1() {   
    c1 = new Container();
    b1 = new Button();      
    b1.getUnselectedStyle().setBorder(Border.createLineBorder(2, 0x000000));
    b1.addActionListener(this);
    mList1 = new List();
    mList1.setName("l1");
    mList1.setRenderer(new DefaultListCellRenderer());
    mList1.addItem("one");
    mList1.addItem("two"); 
    mList1.addItem("three");         
    mList1.addItem("four");
    mList1.addItem("five");  
    c1.addComponent(b1);
    c1.addComponent(mList1);
}    

private void fillList2() {
    c2 = new Container();
    b2 = new Button();
    b2.getUnselectedStyle().setBorder(Border.createLineBorder(2, 0x000000));             
    b2.addActionListener(this);        
    mList2 = new List();
    mList2.setName("l2");
    mList2.setRenderer(new DefaultListCellRenderer());
    mList2.addItem("путин");
    mList2.addItem("ест"); 
    mList2.addItem("детей");         
    mList2.addItem("больше чем");
    mList2.addItem("любит родину");    
    c2.addComponent(b2);
    c2.addComponent(mList2);
}    

private class CRenderer extends DefaultListCellRenderer {
    public Component getListCellRendererComponent(List list, Object value, int index, boolean isSelected) {
        return (Container)value; //To change body of generated methods, choose Tools | Templates.
    }
}

1 ответ

Может ли этот компонент решить вашу проблему?

PopupChoiceGroup

Другие вопросы по тегам