ArrayAdapter 또는 SpinnerAdapter를 상속받아서 Adapter를 만들어 사용하시면 됩니다.
https://developer.android.com/reference/android/widget/ArrayAdapter
https://developer.android.com/reference/android/widget/SpinnerAdapter
아래의 두 메소드를 필요에 따라 오버라이드 하세요,
public View getView (int position,
View convertView,
ViewGroup parent)
public View getDropDownView (int position,
View convertView,
ViewGroup parent)
이름을 보면 추측하시겠지만, getView 는 선택된 spinner아이템이 화면에 보여지는 것과 관련이 있고, getDropDownView는 spinner를 눌렀을 때 펼쳐지는 dropdownmenu가 보여지는 것과 관련이 있습니다.
이 메소드들 안에서 LayoutInflater 를 이용해서 준비하신 레이아웃을 inflate해서 사용하시면 됩니다.
위에 있는 링크를 눌러서 해당 메소드들을 보시면 자세한 설명과 기본적인 가이드가 있습니다.
그리고 spinner 아이템을 가져오는 부분은 데이터가 어디에 위치할 건지에 따라 결정하시면 됩니다. 서버에 위치한다면 REST API를 해 가져오면 되고 로컬 DB 사용하실거면 앱 릴리즈할 때 같이 배포가 되던가 해야할 거구요.이 부분은 목적에 맞게 님이 판단할 문제입니다.