Bind Spinner (Dropdown) In android


import java.util.ArrayList;
import android.app.Activity;
import android.database.DataSetObserver;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.Spinner;
import android.widget.SpinnerAdapter;
import android.widget.TextView;
import android.widget.Toast;

public class Main extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.setContentView(R.layout.main);
        Spinner s = (Spinner) this.findViewById(R.id.spinner);
        // fill the ArrayList:
        ArrayList<Guy> guys = new ArrayList<Guy>();
        guys.add(new Guy("Lukas", 18));
        guys.add(new Guy("Stefe", 20));
        guys.add(new Guy("Forest", 50));
        MyAdapter adapter = new MyAdapter(guys);
        // apply the Adapter:
        s.setAdapter(adapter);
        // onClickListener:
        s.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            public void onItemSelected(AdapterView<?> parent,
                View view, int pos, long id) {
                Guy g = (Guy) parent.getItemAtPosition(pos);
                Toast.makeText(getApplicationContext(),
                        g.name+" is "+g.age+" years old.",
                        Toast.LENGTH_LONG).show();
            }

            public void onNothingSelected(AdapterView parent) {
              // Do nothing.
            }
        });
    }

 
    private class MyAdapter implements SpinnerAdapter{

   
        ArrayList<Guy> data;

        public MyAdapter(ArrayList<Guy> data){
            this.data = data;
        }

        @Override
        public int getCount() {
            return data.size();
        }

     
        @Override
        public Object getItem(int position) {
            return data.get(position);
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public int getItemViewType(int position) {
            return android.R.layout.simple_spinner_dropdown_item;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent)         {
            TextView v = new TextView(getApplicationContext());
            v.setTextColor(Color.BLACK);
            v.setText(data.get(position).name);
            return v;
        }

        @Override
        public int getViewTypeCount() {
            return 1;
        }

        @Override
        public boolean hasStableIds() {
            return false;
        }

        @Override
        public boolean isEmpty() {
            return false;
        }

        @Override
        public void registerDataSetObserver(DataSetObserver observer) {
            // TODO Auto-generated method stub

        }

        @Override
        public void unregisterDataSetObserver(DataSetObserver observer) {
            // TODO Auto-generated method stub

        }

        @Override
        public View getDropDownView(int position, View convertView,
                ViewGroup parent) {
            return this.getView(position, convertView, parent);
        }

    }

    private class Guy{
        public String name;
        public int age;

        public Guy(String name, int age){
            this.name = name;
            this.age = age;
        }
    }
}

0 comments: