0

私の質問を説明する最良の方法は、最初に何をしているのかを説明することだと思います。

3 つの listpick オプション (リストビューを起動するボタン) を持つ単純なアクティビティがあります。各 ListPicker には、ListView に 8 つの項目があります。

Listview の各項目 (名前の値と呼びましょう) には、対応する Address と Phone があります。

だからここに私が使用している定数の例があります

public final String GROUP_1_VENUE_1_NAME = "1name1";
public final String GROUP_1_VENUE_1_ADDRESS = "1address1";
public final String GROUP_1_VENUE_1_PHONE = "1phone1";
public final String GROUP_1_VENUE_2_NAME = "1name2";
public final String GROUP_1_VENUE_2_ADDRESS = "1address2";
public final String GROUP_1_VENUE_2_PHONE = "1phone2";
public final String GROUP_1_VENUE_3_NAME = "1name3";
public final String GROUP_1_VENUE_3_ADDRESS = "1address3";
public final String GROUP_1_VENUE_3_PHONE = "1phone3";
.....

public final String GROUP_2_VENUE_1_NAME = "2name1";
public final String GROUP_2_VENUE_1_ADDRESS = "2address1";
public final String GROUP_2_VENUE_1_PHONE = "2phone1";
public final String GROUP_2_VENUE_2_NAME = "2name2";
public final String GROUP_2_VENUE_2_ADDRESS = "2address2";
public final String GROUP_2_VENUE_2_PHONE = "2phone2";
....

public final String GROUP_3_VENUE_1_NAME = "3name1";
public final String GROUP_3_VENUE_1_ADDRESS = "3address1";
public final String GROUP_3_VENUE_1_PHONE = "3phone1";
public final String GROUP_3_VENUE_2_NAME = "3name2";
public final String GROUP_3_VENUE_2_ADDRESS = "3address2";
public final String GROUP_3_VENUE_2_PHONE = "3phone2";
...

リストピッカーからアイテムが選択され、結果を評価したい

設定する必要がある 3 つの文字列があります。名前、住所、電話番号

だから今、私はこのようなものを持っています...

if (selection.equals(GROUP_1_VENUE_1_NAME) {
    name = GROUP_1_VENUE_1_NAME;
    address = GROUP_1_VENUE_1_ADDRESS;
    phone = GROUP_1_VENUE_1_PHONE;
} else if (selection.equals(GROUP_1_VENUE_2_NAME) {
    name = GROUP_1_VENUE_2_NAME;
    address = GROUP_1_VENUE_2_ADDRESS;
    phone = GROUP_1_VENUE_2_PHONE;
} else if .....

などなど。

それで、ここに私の質問があります。選択が NAME CONSTANTS の 1 つと等しいかどうかを評価し、そうであれば、対応する値を設定できるようにする簡単な方法はありますか?

4

4 に答える 4

3

次の 2 つの方向でコードを改善する必要があると思います。

名前、電話番号、および住所を集約する新しい単純なクラスを作成します。

class Contact {
    private final String name;
    private final String phone;
    private final String address;

    public Contact(String name, String phone, String address) {
        this.name = name;
        this.phone = phone;
        this.address = address;
    }
    // getters
}

Map を使用して選択マッピングを保存します。

private static final Map<String, Contact> selections = new HashMap<String, Contact>();
static {
    selections.put("3name1", new Contact("name1", "phone1", "address1"));
    // other selections
}

次に、マップを検索して連絡先にアクセスできます。

Contact contact = selections.get(selection);
于 2013-05-21T13:49:50.723 に答える
0

住所と電話の種類ごとにマップを用意できますMap<String, String>

次に、名前がわかっているかどうかを確認し(または入力が常にわかっている場合はその部分をスキップして)、値を入力するだけです。

// Preparation
addresses.put(GROUP_1_VENUE_1_NAME, GROUP_1_VENUE_1_ADDRESS);
phones.put(GROUP_1_VENUE_1_NAME, GROUP_1_VENUE_1_PHONE);

...

// Evaluation    
name = selection;
address = addresses.get(name);
phone = phones.get(name);
于 2013-05-21T13:49:56.993 に答える