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
Detecting Whether a Headset Is Plugged into an Android Device or Not
Adt Will Not Allow Creation of Android Activity
Android Command Line Tools Sdkmanager Always Shows: Warning: Could Not Create Settings
Create a Ninepatch/Ninepatchdrawable in Runtime
Detect from Browser If a Specific Application Is Installed in Android
Android: Speech Recognition Without Using Google Server
Android Webview, How to Handle Redirects in App Instead of Opening a Browser
Apply a Theme to an Activity in Android
Facebook Key Hash Does Not Match Any Stored Key Hashes
How to Take a Screenshot of a Current Activity and Then Share It
Error Message 'Java.Net.Socketexception: Socket Failed: Eacces (Permission Denied)'
Android Listview Refresh Single Row
Handle Screen Rotation Without Losing Data - Android
Android Textwatcher.Aftertextchanged VS Textwatcher.Ontextchanged
Android Overriding Onbackpressed()