Reputation: 39
I want to disable first item in spinner like here: enter link description here But when I did this, like in this code my layout shows twice, one on the other.
final Spinner spinner = (Spinner) findViewById(R.id.spinner);
String[] choose = new String[]{
"Get Day",
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday"
};
final List<String> day_of_weeks = new ArrayList<>(Arrays.asList(choose));
final ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this,R.layout.activity_main, R.id.textView, day_of_weeks) {
@Override
public boolean isEnabled(int position) {
if (position == 0) {
return false;
} else {
return true;
}
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
View view = super.getDropDownView(position, convertView, parent);
TextView textview = (TextView) view;
if (position == 0) {
textview.setTextColor(Color.GREEN);
} else {
textview.setTextColor(Color.BLACK);
}
return view;
}
};
spinnerArrayAdapter.setDropDownViewResource(R.layout.activity_main);
spinner.setAdapter(spinnerArrayAdapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String selectedItemText = (String) parent.getItemAtPosition(position);
if (position > 0) {
Toast.makeText(getApplicationContext(), "Selected:" + selectedItemText, Toast.LENGTH_SHORT).show();
}
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
}
So I started to change my old code but I don`t know how to disable the first item. Mainly I want to have code like this:
final Spinner spinner = (Spinner) findViewById(R.id.spinner);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.Choose, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
String day = spinner.getSelectedItem().toString();
MainActivity.this.number = position + 1;
//Toast.makeText(context, "Wybrano: " + day,Toast.LENGTH_LONG).show();
switch (position){
case 1:
Toast.makeText(context, "You choose " + day,Toast.LENGTH_LONG).show();
//some code here
break;
case 2:
Toast.makeText(context, "You choose " + day,Toast.LENGTH_LONG).show();
//some code here
break;
case 3:
Toast.makeText(context, "You choose: " + day,Toast.LENGTH_LONG).show();
break;
case 4:
Toast.makeText(context, "You choose " + day,Toast.LENGTH_LONG).show();
break;
case 5:
Toast.makeText(context, "You choose " + day,Toast.LENGTH_LONG).show();
break;
case 6:
Toast.makeText(context, "You choose " + day,Toast.LENGTH_LONG).show();
break;
case 7:
Toast.makeText(context, "You choose " + day,Toast.LENGTH_LONG).show();
break;
default:
Toast.makeText(context, "You choose " + "er",Toast.LENGTH_LONG).show();
}
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.budzik.MainActivity"
>
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="28dp"
android:layout_marginTop="24dp"
android:text="Ustaw Budzik"
android:textColor="@color/colorAccent"
android:textSize="24sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="24dp"
android:layout_marginRight="16dp"
android:layout_marginTop="16dp"
android:text="@string/zapisz_dane"
android:textColor="@android:color/holo_orange_dark"
android:textSize="18sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
/>
<Spinner
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="28dp"
android:layout_marginTop="48dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView" />
<TimePicker
android:id="@+id/timePicker"
android:layout_width="320dp"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginRight="72dp"
android:layout_marginStart="72dp"
android:layout_marginTop="84dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/spinner" />
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="24dp"
android:layout_marginTop="20dp"
android:text="@string/ustaw_dz"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/button"
tools:ignore="MissingConstraints" />
<ToggleButton
android:id="@+id/toggleButton2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="132dp"
android:layout_marginTop="128dp"
android:text="@string/Przelocznik"
android:visibility="visible"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="MissingConstraints" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
android:text="@string/on"
android:visibility="visible"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/spinner"
tools:ignore="MissingConstraints"
tools:text="on"
/>
<Button
android:id="@+id/button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="56dp"
android:layout_marginTop="88dp"
android:text="@string/off"
android:visibility="visible"
android:onClick="cancelalarm"
app:layout_constraintStart_toEndOf="@+id/toggleButton2"
app:layout_constraintTop_toBottomOf="@+id/button"
tools:ignore="MissingConstraints,OnClick"
tools:text="off"
/>
</android.support.constraint.ConstraintLayout>
My strings.xml
<resources>
<string name="app_name">Budzik</string>
<string-array name="Choose">
<item>Get Day</item>
<item>Monday</item>
<item>Tuesday</item>
<item>Wednesday</item>
<item>Thursday</item>
<item>Friday</item>
<item>Saturday</item>
<item>Sunday</item>
</string-array>
<string name="zapisz_dane">Zapisz</string>
<string name="ustaw_dz">Ustaw Dźwięk</string>
<string name="Przelocznik">Przel</string>
<string name="on">on</string>
<string name="off">off</string>
<string name="Day">Get day</string>
Upvotes: 1
Views: 10436
Reputation: 655
ArrayAdapter adapter = new ArrayAdapter(this, R.layout.your_spinner_layout,
spinnerArray) {
public View getDropDownView(int position, View convertView, ViewGroup parent) {
return super.getDropDownView(position + 1, convertView, parent);
}
public int getCount() {
return spinnerArray.size - 1;
}
};
For Second Approach Refer To the Below link.
How to add a hint to Spinner in Android
Upvotes: 0
Reputation: 3100
use your previous code with minor changes check below code
final Spinner spinner = (Spinner) findViewById(R.id.spinner);
List<String> list = new ArrayList<String>();
list.add("Get Day");
list.add("Monday");
list.add("Tuesday");
list.add("Wednesday");
list.add("Thursday");
list.add("Friday");
list.add("Saturday");
list.add("Sunday");
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
R.layout.spinner_text, list) {
@Override
public boolean isEnabled(int position) {
if (position == 0) {
return false;
} else {
return true;
}
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
View view = super.getDropDownView(position, convertView, parent);
TextView textview = (TextView) view;
if (position == 0) {
textview.setTextColor(Color.GREEN);
} else {
textview.setTextColor(Color.BLACK);
}
return view;
}
};
spinnerArrayAdapter.setDropDownViewResource(R.layout.spinner_text);
spinner.setAdapter(spinnerArrayAdapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String selectedItemText = (String) parent.getItemAtPosition(position);
if (position > 0) {
Toast.makeText(getApplicationContext(), "Selected:" + selectedItemText, Toast.LENGTH_SHORT).show();
}
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
}
add layout spinner_text.xml
file
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layoutDirection="ltr"
android:id="@android:id/text1"
style="@style/spinnerItemStyle"
android:singleLine="true"
android:layout_width="match_parent"
android:layout_height="50dp"
android:ellipsize="marquee"
android:paddingLeft="12dp"
android:layout_margin="10dp"
android:gravity="center_vertical"/>
In your styles.xml
add in resource
<style name="spinnerItemStyle" parent="android:Widget.TextView.SpinnerItem">
<item name="android:divider">@color/colorPrimaryDark</item>
<item name="android:dividerHeight">1dp</item>
</style>
<style name="spinnerDropDownItemStyle" parent="android:TextAppearance.Widget.TextView.SpinnerItem">
</style>
Upvotes: 2