0

So I'm writing a program that has three spinners and I want to add an array to each of them. However the code I have at the moment works but is very long so I was wondering if there is an easier/shorter/more efficient way to code it.

        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
                this, R.array.distanceType,
                android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        distanceSpinner.setAdapter(adapter);

        ArrayAdapter<CharSequence> adapter2 = ArrayAdapter.createFromResource(
                this, R.array.areaType, android.R.layout.simple_spinner_item);
        adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        areaSpinner.setAdapter(adapter2);

        ArrayAdapter<CharSequence> adapter3 = ArrayAdapter.createFromResource(
                this, R.array.genderType, android.R.layout.simple_spinner_item);
        adapter3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        genderSpinner.setAdapter(adapter3);

As you can see its basically the the same code repeated 3 times.

4

1 に答える 1

3

カスタム アダプタの作成を容易にするファクトリ メソッドを作成します。

 public ArrayAdapter createSimpleAdapter(int itemsArrayId ) {
       ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
            this, itemsArrayId,
            android.R.layout.simple_spinner_item);
       adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
       return adapter;         
 }

その後、作成は次のように簡単になります。

 distanceSpinner.setAdapter(createSimpleAdapter(R.array.distanceType));
 areaSpinner.setAdapter(createSimpleAdapter(R.array.areaType));
 genderSpinner.setAdapter(createSimpleAdapter(R.array.genderType));
于 2013-05-06T20:44:02.450 に答える