在我的Android应用程序中,我有一个带项目的Spinner,如:(1,2)(3,4)..(71,72)。 当我从那个Spinner中选择一个Item然后我得到eg。 (67,68)在那里。 现在我想以编程方式将所选项目更改为(65,66)或更改为 (69,70)点击一个或另一个textView。 也就是说,我希望通过单击两个textView来减少或增加String Array中的选择位置,如下所示:
'<< SelectedItem>> '。
为此,我可以使用setSelection(position)。
我的应用程序可以通过使用getSelectedItemPosition来了解到目前为止选择了哪个项目。
getSelectedItemPosition返回一个整数。所以,例如。如果我减小该整数并使用它运行setSelection(position),则SelectedItem将更改为该数组中的上一项。
因此,为了实现这一点,我必须将整数添加到'position_variable', 然后用1减少该变量,并使用该值运行setSelection(position_variable)。
程序必须验证位置0或最大值是否不超过/超出界限。
我怎样才能在Java中实现这一目标?我正在Android Studio中开发我的应用程序。
在activity_main.xml中我有以下内容:
<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"/>
在MainActivity.java中,我有以下几点:
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 :(得分: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.我们在此使用它不低于0.因此,如果spinner3.getSelectedItemPosition() - 1
小于(或等于)0,Math.max(0, spinner3.getSelectedItemPosition() - 1)
将返回0。
与Math.min相同,但在这种情况下,我们检查上限值(取决于数组的大小)。
您也可以输入
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);
[...]
}
}