Ich muss den Standardwert text "select your Device" in meiner Dropdown-Liste für Spinner festlegen. Ich habe es als Listenelement gesetzt, sodass es als Dropdown-Listenelemente fungiert und ich die Dropdown-Liste ausblenden kann Deshalb bekomme ich in meiner Dropdown-Liste ein Leerzeichen.
Wie soll ich das machen?
dies ist der Code, den ich verwende
mToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar);
setSupportActionBar(mToolbar);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setDisplayShowTitleEnabled(false);
/*Setup a Spinner*/
mToolbarSpinner = (Spinner) findViewById(R.id.spinner_toolbar);
/*Manage the spinner*/
mToolbarSpinnerNavigationItems = new ArrayList<SpinnerNavItem>();
mToolbarSpinnerNavigationItems.add(new SpinnerNavItem("Select your Seebo", R.drawable.deviceonline));
/*setting the mToolbarSpinnerNavigationItems to list_item_title_navigation.xml*/
mArrayAdapter = new ArrayAdapter(this, R.layout.list_item_title_navigation,mToolbarSpinnerNavigationItems){
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// remember to inflate custom layout for spinner item
// then set anything you want here
// remember to use convertView.findViewById(), not just findViewById()
// this is an example
// inflate layout
convertView = View.inflate(MainActivity.this, R.layout.list_item_title_navigation, null);
// get view
TextView tvText1 = (TextView) convertView.findViewById(R.id.devicetitle);
ImageView imgIcon = (ImageView) convertView.findViewById(R.id.deviceicon);
imgIcon.setVisibility(View.GONE);
//imgIcon.setImageResource(mToolbarSpinnerNavigationItems.get(position).getIcon());
// set content
tvText1.setText(mToolbarSpinnerNavigationItems.get(position).getTitle());
// return
return convertView;
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
return convertView;
}
};
//setting adapter to Spinner
mToolbarSpinner.setAdapter(mArrayAdapter);
Soweit ich Ihre Frage verstehe, können Sie Folgendes tun: Überschreiben Sie Spinner
view
, indem Sie es die Indexierung von -1 anstelle von 0 starten, damit der erste Eintrag gemacht wird von Array als das, was Sie wollen.
Wählen sie ihren Gerätetyp
In StackOverflow gibt es bereits mehrere Fragen, auf die Sie sich beziehen können. Um diese zu überschreiben, wurde eine verallgemeinerte Lösung vorgeschlagen.
hier .
Umgekehrt können Sie auch die benutzerdefinierte Standardposition von Spinner auf Ihre Art einstellen, indem Sie dieses Codefragment verwenden:
ArrayAdapter<String> spinnerAdap = (ArrayAdapter<String>) mySpinner.getAdapter();
int spinnerPosition = messgAdap.getPosition(theDefaultValue);
mySpinner.setSelection(spinnerPosition);
Um ein Element aus der Dropdown-Liste auszuwählen: Direkt nach dem Einstellen des Adapters
spinner.setAdapter(yourAdapter);
spinner.setSelected(position);
//position is integer starting from 0 to n-1 (n is number of items in the list or array). This will set nth item as the selected and visible item to the user.
sie können wie verwenden,
final ArrayList<String> strDeviceArr = new ArrayList<>();
strDeviceArr.add("Select device");
strDeviceArr.add("Nexus X");
strDeviceArr.add("Nexus XL");
spnrDevice.setAdapter(new ArrayAdapter<>(MainActivity.this, R.layout
.layout_spinner_textview, R.id.textView, strDeviceArr));
spnrDevice.setSelection(0); //set default selection to 0
spnrDevice.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String valueSelected = strDeviceArr.get(position);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
Verwenden Sie diese Reihenfolge:
dropdown = (Spinner) findViewById(R.id.target_dropdown);
List<String> targetList = new ArrayList<>(targetSet);
targetList.add(0, "Select a device");
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, Android.R.layout.simple_spinner_dropdown_item, targetList);
dropdown.setAdapter(adapter);
dropdown.setSelection(0);