#android #arrays #android-alertdialog #android-spinner
#Android #массивы #android-alertdialog #android-счетчик
Вопрос:
Я использую кнопку для отображения всплывающего окна.Это похоже на счетчик, но поскольку я не получал всплывающее окно в качестве счетчика, я использовал кнопку.Все значения всплывающего окна я получаю из массива string.Теперь, что я хочу сделать, это то, что если пользователь выбирает «Мужской» из всплывающего окна, я хочу отправить связанный с ним код в веб-службу, а не «Мужской» сам.
Гендерный массив
<string-array name="Gender">
<item>Select Gender</item>
<item>Male</item>
<item>Female</item>
</string-array>
Массив идентификаторов пола
<string-array name="Gender_id">
<item>Select</item>
<item>2</item>
<item>1</item>
Всплывающее окно
public static void showDialog(Context c, String title, final String[] array, final Button b) {
builder = new AlertDialog.Builder(c);
builder.setTitle(title);
builder.setItems(array, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
b.setText(array[i]);
dialogInterface.dismiss();
}
});
builder.show();
}
Теперь предположим, что если пользователь выбирает «Female» из всплывающего окна, 2 должно быть отправлено на сервер, поэтому в основном я хочу позицию того, что выбирает пользователь, чтобы я мог передать в другой массив и получить код
Комментарии:
1. просто создайте переменную класса типа selectedGender и в событии onclick присвоите ей значение. например, selectedGender = i; и используйте эту переменную в качестве значения, которое вы хотите отправить веб-службе.
Ответ №1:
Попробуйте этот способ, надеюсь, это поможет вам решить вашу проблему.
main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center">
<Button
android:id="@ id/btnSelectGender"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Select Gender"/>
</LinearLayout>
MyActivity.java
public class MyActivity extends Activity {
private Button btnSelectGender;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnSelectGender = (Button) findViewById(R.id.btnSelectGender);
btnSelectGender.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showDialog(MyActivity.this, "Select Gender", getResources().getStringArray(R.array.Gender),new onGenderSelected() {
@Override
public void genderSelection(int position) {
btnSelectGender.setText(getResources().getStringArray(R.array.Gender)[position]);
Toast.makeText(MyActivity.this,getResources().getStringArray(R.array.Gender)[position] " >>> " getResources().getStringArray(R.array.Gender_id)[position],Toast.LENGTH_SHORT).show();
System.out.print("Gender Title : " getResources().getStringArray(R.array.Gender)[position]);
System.out.print("Gender Value : " getResources().getStringArray(R.array.Gender_id)[position]);
}
});
}
});
}
public static void showDialog(Context c, String title, final String[] array,final onGenderSelected target) {
AlertDialog.Builder builder = new AlertDialog.Builder(c);
builder.setTitle(title);
builder.setItems(array, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
target.genderSelection(i);
dialogInterface.dismiss();
}
});
builder.show();
}
public interface onGenderSelected{
public void genderSelection(int position);
}
}
Ответ №2:
Ваш элемент Spinner создается следующим образом
Spinner display_spinner = (Spinner) findViewById(R.id.datadisplay_spinner);
ArrayAdapter<CharSequence> record_length_spinner_adapter = ArrayAdapter
.createFromResource(youractivity.this, R.array.Gender, android.R.layout.simple_spinner_item);
record_length_spinner_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
display_spinner.setAdapter(record_length_spinner_adapter);
Комментарии:
1. я не использовал счетчик, я использовал кнопку