How to configure a spinner drop-down list

Is it possible to customize the spinner drop-down list. In the scrolling drop-down list, by default there is an adapter view. I want to change this view to have my own text view or something like that.

+3
source share
3 answers

You can customize the drop-down list by overriding the getDropDownView method from your ArrayAdapter .

 @Override public View getDropDownView(int position, View convertView, ViewGroup parent){ ... } 
+1
source

Add this inner class to your class and modify it as you like.

 public class MyAdapter extends ArrayAdapter<String>{ public MyAdapter(Context context, int textViewResourceId, String[] objects) { super(context, textViewResourceId, objects); } @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); } public View getCustomView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater=getLayoutInflater(); View row=inflater.inflate(R.xml.row, parent, false); TextView label=(TextView)row.findViewById(R.id.company); label.setText(strings[position]); TextView sub=(TextView)row.findViewById(R.id.sub); sub.setText(subs[position]); ImageView icon=(ImageView)row.findViewById(R.id.image); icon.setImageResource(arr_images[position]); return row; } } 

And add this adapter to your counter:

  Spinner mySpinner = (Spinner)findViewById(R.id.expandableImagesList); mySpinner.setAdapter(new MyAdapter(NewEventActivity.this, R.xml.row, strings)); 

And also create a new xml and add everything you want your counter to contain:

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="3dip" > <ImageView android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/icon"/> <TextView android:layout_toRightOf="@+id/image" android:padding="3dip" android:layout_marginTop="2dip" android:textStyle="bold" android:id="@+id/company" android:text="CoderzHeaven" android:layout_marginLeft="5dip" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <TextView android:layout_toRightOf="@+id/image" android:padding="2dip" android:layout_marginLeft="5dip" android:id="@+id/sub" android:layout_below="@+id/company" android:text="Heaven of all working codes" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </RelativeLayout> 

This is my code, so you should change it for your needs.

+1
source

You can do

 arrayAdapter.setDropDownViewResource(R.layout.your_layout); 

where your_layout is your XML containing only TextView

0
source

Source: https://habr.com/ru/post/979753/


All Articles