Java: как получить соответствующее значение сохраненного индекса в arrayList - PullRequest
0 голосов
/ 03 апреля 2012

Я сохранил индексы элементов comboBox в массиве.Теперь, когда я получаю его, я получаю те же индексы.

То, что я хочу, я хочу показать соответствующее значение этого индекса.

Вот мой код.

Это функция для добавления индексов в массив.

public void addData() {

  // Retrive the text field values and combo box selected index and store them in variable
  int roomIndex = roomTypeCombo.getSelectedIndex();
  int mealIndex = mealCombo.getSelectedIndex();
  Int daysIndex = daysCombo.getSelectedIndex();

  //create the object of Customer class and pass the parameters
  Customer c = new Customer(roomIndex, mealIndex, daysIndex);
  myList.add(c); // add data into array list


} // end of function

Это функция для отображения сохраненных значений в ArrayList

public void showAll() {
  String displayRecords = ""; // empty string

  // retrieve all stored records in array list and store in variable
  for (int i = 0; i < myList.size(); i++) {
    displayRecords = displayRecords + myList.get(i) + "\n";
  }

  display.setText(displayRecords);
} // end of function

Ответы [ 4 ]

0 голосов
/ 03 апреля 2012

Почему бы вам не распечатать roomIndex, foodIndex, daysIndex перед созданием объекта Customer.Просто чтобы убедиться, что вы правильно получаете значения, прежде чем создавать объект.

0 голосов
/ 03 апреля 2012

Я предполагаю, что ваш клиентский объект содержит три члена с именами roomIndex, mealIndex и daysIndex, поскольку вы делаете это: Customer c = new Customer(roomIndex, mealIndex, daysIndex);

Метод showAll, который вы опубликовали, не будет печатать значения, как вы ожидаете. Это связано с тем, что каждый элемент в myList - это объект customer, а не строка. Объект customer содержит различные строки tho (roomindex, mealindex, daysindex), поэтому если вы хотите распечатать их, вам понадобятся геттеры в вашем классе клиентов. Как только вы это сделаете, вы можете напечатать содержимое класса клиента следующим образом:

for (int i = 0; i < myList.size(); i++) {
    System.out.println( myList.get(i).getRoomIndex() + " " + myList.get(i).getMealIndex() + " " + myList.get(i).getDaysIndex()+"\n");
  }

Методы getRoomIndex и т. Д. Должны быть методом внутри Customer, который возвращает строку, например:

public String getRoomIndex(){
   return roomIndex;
}

EDIT: Я пропустил, что вы взяли индекс только из comboBox, и мое решение ожидает значение, а не индекс. Вы можете получить предмет сразу же, как указано в его сообщении. Метод getSelectedItem возвращает объект типа Object, поэтому он приводит его к строке. Это может быть опасно, если выбранный вами предмет не является строкой, поэтому он не может считаться водонепроницаемым, но может работать в вашем примере

0 голосов
/ 03 апреля 2012

Поскольку вы только держите индексы элементов , а не значения элементов, которые вы можете вызвать, и отображаете значения из вашего выпадающего списка следующим образом:

public void showAll() {
  String displayRecords = ""; // empty string
  int roomIndex;
  int mealIndex;
  int daysIndex; 

  // retrieve all stored records in array list and store in variable
  for (int i = 0; i < myList.size(); i++) {
    roomIndex = ((Customer)(myList.get(i)).roomIndex;
    mealIndex = ((Customer)(myList.get(i)).mealIndex;
    daysIndex = ((Customer)(myList.get(i)).daysIndex;
    displayRecords = displayRecords + roomTypeCombo.getItemAt(roomIndex) + " " + 
      roomTypeCombo.getItemAt(mealIndex) + " " + roomTypeCombo.getItemAt(daysIndex)
     + "\n";
  }

  display.setText(displayRecords);
} // end of function
0 голосов
/ 03 апреля 2012

Если вам нужно указать значение combobox, вместо

int roomIndex = roomTypeCombo.getSelectedIndex();
int mealIndex = mealCombo.getSelectedIndex();
Int daysIndex = daysCombo.getSelectedIndex();

Почему бы вам не использовать следующий код:

String room = (String) roomTypeCombo.getSelectedItem();
String meal = (String) mealCombo.getSelectedItem();
String days = (String) daysCombo.getSelectedItem();

И создайте конструктор Customer, чтобы было верно следующее:

Customer c = new Customer(room, meal, days);
...