custom_spinner_with_colors
DressesActivity.java
public class DressesActivity extends AppCompatActivity {
private Spinner spColor,spSize;
ArrayList<SpinnerModel> sl = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dresses);
initializeViews();
SpinnerModel a1 = new SpinnerModel();
a1.setColorName("pink");
a1.setColorCode("#ff0099");
SpinnerModel a2 = new SpinnerModel();
a2.setColorName("red");
a2.setColorCode("#ff2323");
SpinnerModel a3 = new SpinnerModel();
a3.setColorName("green");
a3.setColorCode("#178404");
sl.add(a1);
sl.add(a2);
sl.add(a3);
Resources resources= getResources();
CustomSpinnerAdapter customSpinnerAdapter = new CustomSpinnerAdapter(DressesActivity.this,
R.id.spinner_row_textview, sl,resources);
spColor.setAdapter(customSpinnerAdapter);
}
private void initializeViews() {
spColor = (Spinner) findViewById(R.id.activity_dresses_color_sp);
spSize = (Spinner) findViewById(R.id.activity_dresses_size_sp);
}
}
CustomSpinnerAdapter.java
public class CustomSpinnerAdapter extends ArrayAdapter<String>{
private Activity activity;
private ArrayList data;
public Resources res;
SpinnerModel tempValues=null;
LayoutInflater inflater;
/************* CustomAdapter Constructor *****************/
public CustomSpinnerAdapter(DressesActivity activitySpinner, int textViewResourceId,
ArrayList objects, Resources resLocal) {
super(activitySpinner, textViewResourceId, objects);
/********** Take passed values **********/
activity = activitySpinner;
data = objects;
res = resLocal;
/*********** Layout inflator to call external xml layout () **********************/
inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public View getDropDownView(int position, View convertView,ViewGroup parent) {
return getCustomView(position, convertView, parent);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
return getCustomView(position, convertView, parent);
}
// This funtion called for each row ( Called data.size() times )
public View getCustomView(int position, View convertView, ViewGroup parent) {
/********** Inflate spinner_rows.xml file for each row ( Defined below ) ************/
View row = inflater.inflate(R.layout.spinner_rows, parent, false);
/***** Get each Model object from Arraylist ********/
tempValues = null;
tempValues = (SpinnerModel) data.get(position);
TextView label = (TextView)row.findViewById(R.id.spinner_row_textview);
View squareFill= (View)row.findViewById(R.id.spinner_row_square);
if(position==0){
// Default selected Spinner item
label.setText("Please select color");
squareFill.setBackgroundResource(res.getIdentifier("com.purplemart.purplemart:drawable/ic_invert_colors_black_18dp",null,null));
}
else
{
// Set values for spinner each row
label.setText(tempValues.getColorName());
squareFill.setBackgroundColor(Color.parseColor(tempValues.getColorCode()));
}
return row;
}
}
spinner_rows.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/bp_margin_3">
<View
android:id="@+id/spinner_row_square"
android:layout_width="@dimen/bp_margin_20"
android:layout_height="@dimen/bp_margin_20"
android:padding="@dimen/bp_margin_3"/>
<TextView
android:id="@+id/spinner_row_textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/bp_margin_5"
android:text="Colour"
android:textSize="@dimen/bp_margin_11"/>
</LinearLayout>
</LinearLayout>
activity_dresses.xml
.....
<Spinner
android:id="@+id/activity_dresses_color_sp"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="@dimen/margin_32">
</Spinner>.....
output:
Thank you .
---------------------------------------
Tutorial provided by Lokesh.
Program Logic is taken from AndroidExample.com.