@Aukal
Инженер технолог

Скажите пожалуйста ,что я делаю не так- не могу отобразить данные в ListView?

Есть класс с коллекциями , который получает на вход данные класса Контакт. Так вот , не могу их отобразить , выходит ошибка java.lang.NullPointerException
public class Controller {
   //Коллекции
    CollectionContactForList contactForList = new CollectionContactForList();

@FXML
    HBox hbox;

@FXML
ListView<Contact> listContact;
@FXML
Label name;

   public void setListView(){
       contactForList.fieldData();
       listContact.setItems((ObservableList<Contact>) contactForList.getContactList());

       listContact.setCellFactory(new Callback<ListView<Contact>, ListCell<Contact>>() {
           @Override
           public ListCell<Contact> call(ListView<Contact> param) {
               //тут нужно собрать объект ListCell, и вернуть его
               ListCell<Contact> listCell = new ListCell<Contact>(){
                   //от рисовка происходит здесь
                   @Override
                   public void updateItem(Contact item , boolean empty) {
                       super.updateItem(item, empty);

                       if (empty || item == null) {
                           setText(item.getName());
                           setText(null);
                           setGraphic(null);
                       } else {

                           FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/views/boxInContact.fxml"));
                           fxmlLoader.setController(this);
                           try
                           {
                               fxmlLoader.load();
                           }
                           catch (IOException e)
                           {
                               throw new RuntimeException(e);
                           }
                       }
                   }
               };
               return   listCell;

           }
       });

   }

    @FXML
   private void initialize() {
     assert listContact != null : "/views/boxInContact.fxml";
     setListView();
   }

}//Закрытие класса

Класс с коллекциями
public class CollectionContactForList implements ForContact {

  public ObservableList<Contact> contactList= FXCollections.observableArrayList();
    //Set<Contact>setContactList = new HashSet<>();
  public   ListView<Contact> listView = new ListView<Contact>((ObservableList<Contact>) contactList);



    // Методы интерфейса

    @Override
    public void add(Contact contact) {
        contactList.add(contact);
    }// Закрытие метода добавления

    @Override
    public void update(Contact contact) {

    }// метод ,пока не используется , в скором будущем применим его 15 04

    @Override
    public void delete(Contact contact) {
        contactList.remove(contact);
    }// Закрытие метода удаления

    public List<Contact> getContactList() {
        return contactList;
    }


  public void fieldData(){
    contactList.add( new Contact("cvxcv","ada",new Button("st")));

  }

}// Закрытие класса
  • Вопрос задан
  • 401 просмотр
Пригласить эксперта
Ответы на вопрос 1
GavriKos
@GavriKos
Укажите точку. где вылетел эксепшн.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы