2016-01-11 4 views
1

Я использовал средство визуализации списка, и все работает нормально. Затем я сохранил последний элемент с последним извлечения: в рендерере есть 3 кнопки. button1 работает во всех, однако кнопка2 и кнопка3 работают в некоторых и не работают в других? почему это? Если я удалю if (lastClickedButton != null) из кода ниже, он дает NullPointerException для той же кнопки, которая раньше работала в других элементах списка.Проблема с рендерингом списка в codenameone

MyCode:

@Override 
    protected boolean initListModelListEmergencyList(List cmp) { 
     cmp.setModel(new com.codename1.ui.list.DefaultListModel(emergencyPoliceArray)); 
     cmp.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent evt) { 
       for (int i = 0; i < emergencyPoliceArray.size(); i++) { 
        if (cmp.getSelectedItem() == emergencyPoliceArray.get(i)) { 

         lastClickedButton = ((GenericListCellRenderer) cmp.getRenderer()).extractLastClickedComponent(); 
         if (lastClickedButton != null) { 
          System.out.println("Phn no: " + lastClickedButton.getText()); 
        } 
       } 
      } 
     } 
    } 
    ); 

return true; 
    } 

MyConnection:

private void showEmergencyDetails() { 
     JSONParser p = new JSONParser(); 
     Hashtable<String, Object> test; 
     try { 
      test = p.parse(new InputStreamReader(is)); 
      Vector emergencyVector = (Vector) test.get("root"); 
      emergencyPoliceArray = new ArrayList<Map<String, String>>(); 
      for (int j = 0; j < emergencyVector.size(); j++) { 
       Hashtable hm = (Hashtable) emergencyVector.get(j); 
       String title = (String) hm.get("title"); 
       String location = (String) hm.get("location"); 
       Vector phn = (Vector) hm.get("phone"); 
       for (int i = 0; i < phn.size(); i++) { 
        Hashtable hphn = (Hashtable) phn.get(i); 
        String phone1 = (String) hphn.get("phn1"); 
        String phone2 = (String) hphn.get("phn2"); 
        String phone3 = (String) hphn.get("phn3"); 
        HashMap<String, String> mp = new HashMap<String, String>(); 
        mp.put("Phn", phone1); 
        mp.put("Phone2", phone2); 
        mp.put("Phone3", phone3); 
        mp.put("NameHeading", "Name"); 
        mp.put("PhnHeading", "Phn no."); 
        mp.put("LocationHeading", "Location"); 
        mp.put("Title", title); 
        mp.put("Name", title); 
        mp.put("Location", location); 
        emergencyPoliceArray.add(mp); 
       } 
      } 
     } catch (IOException ex) { 
     } 
     showForm("EmergencyListDetails", null); 
    } 

ответ

0

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

При взаимодействии рекомендуем избегать списка. В лучшем случае он взломан для таких случаев использования и не обеспечивает каких-либо преимуществ по сравнению с контейнером для таких распространенных случаев.

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

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