How to Get Spinner Value

How to get Spinner value?


Spinner mySpinner = (Spinner) findViewById(R.id.your_spinner);
String text = mySpinner.getSelectedItem().toString();

How to get spinner value after item select in spinner

If you don't want to use a custom adapter then fetch selected spinner position and using that position fetch your State model

    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
// int position = spinnerState.getSelectedItemPosition();

if(position >= 1){
AllStates allStates = stateList.get(position - 1)
}
}

@Override
public void onNothingSelected(AdapterView<?> parent) {

}
});

Now you can access id from allStates model

How to get Spinner selected item value to string?

Try this:

String text = mySpinner.getSelectedItem().toString();

Like this you can get value for different Spinners.

How to get the Spinner value to save in a variable

You need to implement OnItemSelectedListener and override

public void onItemSelected(AdapterView<?> parent, View view,
int pos, long id) {
// An item was selected. You can retrieve the selected item using
// parent.getItemAtPosition(pos)
}

public void onNothingSelected(AdapterView<?> parent) {
// Another interface callback
}

More info can be found here https://developer.android.com/guide/topics/ui/controls/spinner#SelectListener

Get spinner selected items text?


Spinner spinner = (Spinner)findViewById(R.id.spinner);
String text = spinner.getSelectedItem().toString();

How to pass or get the spinner value to a string in android?

Declare selectdate as static public static LocalDate selectdate;

Create a method named getSelectDate and call it to get changed value , such as inside onCreate, inside onItemSelected of month_spinner and spinYear.

 private void getSelectDate() {
//added
String month = month_spinner.getSelectedItem().toString();
String year = spinYear.getSelectedItem().toString();


//String month = textviewMonth.getText().toString();
//String year = textviewYear.getText().toString();


//combinedString = "16/09/2019";
combinedString = "01/" + month + "/" + year;
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MMMM/yyyy");
selectdate = LocalDate.parse(combinedString, formatter);
//
}

This will fix your button issue also. All is well . setMonthView roll backed to your old code . Here yours Class-

    public class MainActivity extends AppCompatActivity implements CalendarAdapter.OnItemListener {

TextView monthYearText, textviewMonth, textviewYear, textviewYearnMonth;
RecyclerView calendarReyclerView;
public static LocalDate selectdate;

private Spinner month_spinner, spinYear;
String[] months;

String combinedString;
String selectedMonth;

String seltmont;
String selctYear;


@SuppressLint("SetTextI18n")
@RequiresApi(api = Build.VERSION_CODES.O)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

textviewMonth = findViewById(R.id.textviewMonth);
textviewYear = findViewById(R.id.textviewYear);

//for testing
textviewYearnMonth = findViewById(R.id.textviewYearnMonth);

month_spinner = findViewById(R.id.month_spinner);
spinYear = findViewById(R.id.yearspin);


populateSpinnerMonth();
populateSpinnerYear();


initWidget();
// selectdate = LocalDate.now();
getSelectDate();
setMonthView();


//---- on click listener ---//

month_spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

if (parent.getId() == R.id.month_spinner) {
seltmont = parent.getSelectedItem().toString();

Toast.makeText(MainActivity.this, "Selected Month: " + seltmont, Toast.LENGTH_SHORT).show();
textviewMonth.setText(seltmont);
//added
getSelectDate();
updateView();
setMonthView();


}

}

@Override
public void onNothingSelected(AdapterView<?> parent) {

}
});

spinYear.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

if (parent.getId() == R.id.yearspin) {
selctYear = parent.getSelectedItem().toString();
Toast.makeText(MainActivity.this, "Selected Year" + selctYear, Toast.LENGTH_SHORT).show();
textviewYear.setText(selctYear);
getSelectDate();
updateView();
setMonthView();
}

}

@Override
public void onNothingSelected(AdapterView<?> parent) {

}
});


// ---- on click listener ---//

}

@RequiresApi(api = Build.VERSION_CODES.O)
private void getSelectDate() {
//added
String month = month_spinner.getSelectedItem().toString();
String year = spinYear.getSelectedItem().toString();


//String month = textviewMonth.getText().toString();
//String year = textviewYear.getText().toString();


//combinedString = "16/09/2019";
combinedString = "01/" + month + "/" + year;
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MMMM/yyyy");
selectdate = LocalDate.parse(combinedString, formatter);
//
}

//added
private void updateView() {

// combinedString = "01/" + mon + "/" + year ;

//not working
String mon = textviewMonth.getText().toString();
// Log.d("month","code is going here");
// textviewYearnMonth.setText(mon);
// Log.d("month","code cross the textviewYearnMonth");
textviewYearnMonth.setText(mon);
}


private void populateSpinnerYear() {

ArrayList<String> years = new ArrayList<String>();
int thisYear = Calendar.getInstance().get(Calendar.YEAR);

for (int i = 1950; i <= thisYear; i++) {
years.add(Integer.toString(i));
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, years);
spinYear.setAdapter(adapter);

}

private void populateSpinnerMonth() {

months = new DateFormatSymbols().getMonths();
ArrayAdapter<String> monthAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, months);
monthAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
month_spinner.setAdapter(monthAdapter);


}


@RequiresApi(api = Build.VERSION_CODES.O)
private void setMonthView() {
monthYearText.setText(monthYearFromDate(selectdate));
ArrayList<String> daysInMonth = daysInMonthArray(selectdate);
CalendarAdapter calendarAdapter = new CalendarAdapter(daysInMonth, this);
RecyclerView.LayoutManager layoutManager = new GridLayoutManager(getApplicationContext(), 7); //for calendar columns
calendarReyclerView.setLayoutManager(layoutManager);
calendarReyclerView.setAdapter(calendarAdapter);

}

@RequiresApi(api = Build.VERSION_CODES.O)
private ArrayList<String> daysInMonthArray(LocalDate date) {

ArrayList<String> daysInMonthArray = new ArrayList<>();
YearMonth yearMonth = YearMonth.from(date);

int daysInMonth = yearMonth.lengthOfMonth();

LocalDate firstOfMonth = selectdate.withDayOfMonth(1);
int dayOfWeek = firstOfMonth.getDayOfWeek().getValue();

for (int i = 1; i <= 42; i++) {
if (i <= dayOfWeek || i > daysInMonth + dayOfWeek) {
daysInMonthArray.add("");
} else {
daysInMonthArray.add(String.valueOf(i - dayOfWeek));
}
}
return daysInMonthArray;

}

@RequiresApi(api = Build.VERSION_CODES.O)
private String monthYearFromDate(LocalDate date) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMMM yyyy");
return date.format(formatter);
}

private void initWidget() {

calendarReyclerView = findViewById(R.id.calendarRecyclerView);
monthYearText = findViewById(R.id.monthYearTV);

}

@RequiresApi(api = Build.VERSION_CODES.O)
public void previousMonthAction(View view) {


selectdate = selectdate.minusMonths(1);
setMonthView();

}

@RequiresApi(api = Build.VERSION_CODES.O)
public void nextMonthAction(View view) {

selectdate = selectdate.plusMonths(1);
setMonthView();

}

@RequiresApi(api = Build.VERSION_CODES.O)
public void onItemClick(int position, String dayText) {

if (!dayText.equals("")) {
String message = "Selected Date " + dayText + " " + monthYearFromDate(selectdate);
Toast.makeText(this, message, Toast.LENGTH_LONG).show();


}

}
}

To get "dd/MM/yyyy" this format use DateTimeFormatter.ofPattern("dd/MM/yyyy", Locale.ENGLISH).format(selectdate); , no other changes need .

To test -

@RequiresApi(api = Build.VERSION_CODES.O)
private void updateView() {

// combinedString = "01/" + mon + "/" + year ;

//not working
String mon = textviewMonth.getText().toString();
// Log.d("month","code is going here");
// textviewYearnMonth.setText(mon);
// Log.d("month","code cross the textviewYearnMonth");
textviewYearnMonth.setText(DateTimeFormatter.ofPattern("dd/MM/yyyy", Locale.ENGLISH).format(selectdate));
}



get spinner value and post to data base with volley


    mySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
//position is spinner position

//mySpinner.getSelectedItem().toString(); IS value of position (string)


mMap.put("your Key",mySpinner.getSelectedItem().toString());
//the value add to map of volley
}

@Override
public void onNothingSelected(AdapterView<?> parent) {

}
});


Related Topics



Leave a reply



Submit