2012-04-03 19 views
0

comboboxアイテムのインデックスを配列に格納しました。今私はそれを取得しているとき、私は同じインデックスを取得しています。java:arrayListに格納されたインデックスの関連値を取得する方法

私はそのインデックスの関連Valueを表示したいと考えています。

ここに私のコードです。

これは、配列にインデックスを追加するための関数です。

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 
+0

ようこそスタックオーバーフロー!あなたの質問の下で「編集」リンクを使用して、より読みやすいようにフォーマットしてください。編集エリアの下にプレビューが表示されるので、質問を投稿するときに表示される内容や、テキストエリアの右側に書式設定情報(「書式設定方法」)とリンクそれ(** [?] **ボタンが物事をキックオフする)。 –

+0

CustomerクラスでtoString()メソッドはどのように見えますか? – Churk

+0

また、ベストプラクティスのために、 'String displayRecords'と' displayRecords + = xxx'を使用しないでください。cuz stringは不変オブジェクトです。StringBufferを使用してください。 – Churk

答えて

0

に表示保存された値の関数である、そして代わりの

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(roomIndex, mealIndex, daysIndex);

SHOWALL方法:

Customer c = new Customer(room, meal, days); 
+0

あなたは何を購入しますか? 3の代わりに3つの文字列を使用して新しい顧客オブジェクトを作成するint。文字列に連結して顧客オブジェクトを扱っています。 – Churk

+0

'getSelectedIndex()'を 'getSelectedItem()'に置き換えたことに注意してください – Garbage

0

は、私はあなたがこれを行うため、顧客オブジェクトはroomIndex、mealIndexとdaysIndexという3つのメンバーが含まれていることを前提としあなたが掲示したものはあなたが期待しているように値を印刷しません。これは、myListの各要素が文字列ではなく、顧客のオブジェクトであるためです。顧客オブジェクトには異なる文字列(roomindex、mealindex、daysindex)が含まれていますので、印刷する場合は顧客クラスにゲッタが必要です。あなたは、このような顧客のクラスの内容を印刷することができたら:

public String getRoomIndex(){ 
    return roomIndex; 
} 

EDIT:

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など、このような文字列を返すカスタマー内部方法でなければなりません: 私はあなたがcomboBoxからインデックスを取っただけで、私のソリューションはインデックスではなく値を期待しています。彼の投稿に記載されているGarbageのようにすぐにアイテムを取り出すことができます。メソッドgetSelectedItemはObject型のオブジェクトを返します。そのため、オブジェクトを文字列にキャストしているのはそのためです。それは防水ソリューションとは考えられないかもしれないが、あなたの例では働くかもしれないので、あなたはフェッチ項目が文字列でない場合カントーこれは危険なことが

+1

Customerクラスの中にtoStringメソッド(displayRecords + myList.get(i))がある場合、Customerを文字列に自動的にキャストします。彼のtoStringメソッドは、3人のメンバーを返すことです。それは問題ではないので、getRoomIndexは必要ありません。 – Churk

+0

実際には(メソッドが正しく書かれていれば)本当です。 Altho私は彼が1つも投稿しなかったので、toStringメソッドを持つとは思わなかった。しかし+1のことを知り、それをクリアするために+1: –

+0

申し訳ありませんが、私は顧客クラスの中にtoString()メソッドを持っていますが、ここでは言及していません。しかし、私は直接インデックス項目を格納することによって私の問題を解決します。ありがとう – Ravi

0

あなたはだけはアイテムない値ののインデックスを保持するので、あなたはCustomerオブジェクトを作成する前に、roomIndex、mealIndex、daysIndexをプリントアウトしていないのはなぜ

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

:項目は、次のようにあなたのコンボボックスから値を呼び出して表示される場合があります。オブジェクトを作成する前に値を正しく取得していることを確認するだけです。

関連する問題