2017-05-30 9 views
0

私のAndroidアプリケーションでは、(1,2)(3,4)..(71,72)のような項目のSpinnerがあります。 私はそのスピナーからアイテムを選択すると、例えば得る。 (67,68)そこに。 これで、選択したアイテムを(65,66)または (69,70)にプログラム的に変更したいと思っています。 つまり、次のように2つのtextViewsをクリックすることで、文字列配列内の選択位置を減らしたり増やしたいと考えています。AndroidはSpinnerの選択位置を減少または増加させます

'< < SelectedItem >>'。

私はsetSelection(position)を使用できます。

私のアプリケーションは、getSelectedItemPositionを使用して、これまでに選択されたItemを知ることができます。

getSelectedItemPositionは整数を返します。だから例えば。その整数を減らしてsetSelection(position)を実行すると、SelectedItemはその配列の前の項目に変更されます。

これを行うには、整数を 'position_variable'に追加する必要があります。 この変数を1で減らし、その値でsetSelection(position_variable)を実行します。

プログラムは、0を超えているか、または上限を超えていないかを確認する必要があります。

これをJavaでどのように実現できますか? Android Studioでアプリケーションを開発しています。

私は他人の下記の中から持ってMainActivity.javaで
 <TextView 
      android:id="@+id/forward" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_below="@id/ora_keltezese" 
      android:layout_marginStart="5dp" 
      android:layout_marginTop="5dp" 
      android:layout_toEndOf="@id/orarend" 
      android:text="@string/forward" 
      android:textSize="20sp" 
      android:onClick="increaseSpinnerItemPosition"/> 

     <TextView 
      android:id="@+id/backward" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_below="@id/ora_keltezese" 
      android:layout_marginStart="5dp" 
      android:layout_marginTop="5dp" 
      android:text="@string/backward" 
      android:textSize="20sp" 
      android:onClick="decreaseSpinnerItemPosition"/> 

::私は他の人の以下の中から持ってactivity_main.xmlで

public class MainActivity extends AppCompatActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 


     Spinner spinner = (Spinner) findViewById(R.id.orarend); 
     //Create an ArrayAdapter using the string array and a default spinner layout 
     ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, 
       R.array.TanitasiNapok, android.R.layout.simple_spinner_item); 
     // Specify the layout to use when the list of choices appears 
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     // Apply the adapter to the spinner 
     spinner.setAdapter(adapter); 


     Spinner spinner2 = (Spinner) findViewById(R.id.blokkora); 
     //Create an ArrayAdapter using the string array and a default spinner layout 
     ArrayAdapter<CharSequence> adapter2 = ArrayAdapter.createFromResource(this, 
       R.array.BlokkoraSorszama, android.R.layout.simple_spinner_item); 
     // Specify the layout to use when the list of choices appears 
     adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     // Apply the adapter to the spinner 
     spinner2.setAdapter(adapter2); 


     Spinner spinner3 = (Spinner) findViewById(R.id.osztaly); 
     //Create an ArrayAdapter using the string array and a default spinner layout 
     ArrayAdapter<CharSequence> adapter3 = ArrayAdapter.createFromResource(this, 
       R.array.OsztalyKivalasztasa, android.R.layout.simple_spinner_item); 
     // Specify the layout to use when the list of choices appears 
     adapter3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     // Apply the adapter to the spinner 
     spinner3.setAdapter(adapter3); 

     } 

    public void decreaseSpinnerItemPosition (View v) { 
     //What to put here? 
    } 

    public void increaseSpinnerItemPosition (View v) { 
     //What to put here? 
    } 
} 

それでは、どのように私は自分のアプリケーションにposition_variableを実装することができますか? 私の目標はどのように達成できますか?

答えて

0

あなたはこのような何かを試みることができる:

public void decreaseSpinnerItemPosition (View v) { 
    spinner3.setSelection(Math.max(0, spinner3.getSelectedItemPosition() - 1)); 
} 

public void increaseSpinnerItemPosition (View v) { 
    spinner3.setSelection(Math.min(getResources().getStringArray(R.array.OsztalyKivalasztasa).length - 1, spinner3.getSelectedItemPosition() + 1)); 
} 

Math.max(x, y)は、xとyの大きい方の値を返します。したがって、xが1でyが2の場合、これは2を返します.0xが0よりも小さい(または等しい)場合、Math.max(0, spinner3.getSelectedItemPosition() - 1)は0を返します。 Mathと同じですこの場合、(配列のサイズに応じて)上限値をチェックします。

if(spinner3.getSelectedItemPosition() - 1 <= 0) { 
    spinner3.setSelection(0); 
} else { 
    spinner3.setSelection(spinner3.getSelectedItemPosition() - 1); 
} 

入力することもできます。

そしてグローバルにspinner3を定義することを忘れないでください:

public class MainActivity extends AppCompatActivity { 

    private Spinner spinner3; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    [...] 
    spinner3 = (Spinner) findViewById(R.id.osztaly); 
    [...] 
    } 
} 
+0

うわー、それは働きます!実際に私はスピナー2を減らしたり増やしたりしています。そこで私はそれに応じてコマンドを変更しました。私は何をしたのか分かりません。 – PalCsanyi

+0

私は自分の答えを編集し、増減方法を簡略化しました。 – Prexx

+0

ありがとうございました! – PalCsanyi

関連する問題