返回列表 發帖

Spinner (二) 自訂Layout

透過上一次的範例,請將ArrayAdapter改寫成BaseAdapter的模式
能在每一個SpinnerItem中,除了文字內容外,也加入圖片。



MainActivity
  1. @Override
  2.     protected void onCreate(Bundle savedInstanceState) {
  3.         super.onCreate(savedInstanceState);
  4.         setContentView(R.layout.activity_main);
  5.         final String[] food = {"雞腿飯", "魯肉飯", "排骨飯", "水餃", "陽春麵"};
  6.         dataModel model = new dataModel();
  7.         model.item = "雞腿飯";
  8.         model.img = null;
  9.         ArrayList<dataModel> list = new ArrayList<dataModel>();
  10.         list.add(model);
  11.         Spinner spinner = (Spinner) findViewById(R.id.spinner);

  12.         SpinnerAdapter adapter = new SpinnerAdapter(list,MainActivity.this);
  13.         spinner.setAdapter(adapter);

  14.     }
複製代碼
SpinnerAdapter
  1. public class SpinnerAdapter extends BaseAdapter {

  2.     Context context;
  3.     ArrayList<dataModel> data;
  4.     public SpinnerAdapter(ArrayList<dataModel> data,Context context) {
  5.         this.context = context;
  6.         this.data = data;

  7.     }

  8.     @Override
  9.     public int getCount() {
  10.         return 2;
  11.     }

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

  16.     @Override
  17.     public long getItemId(int position) {
  18.         return position;
  19.     }

  20.     @Override
  21.     public View getView(int position, View convertView, ViewGroup parent) {
  22.         Log.d("leolog", String.valueOf(position));
  23.         // 綁定你的Adapter要使用哪一個layout
  24.         convertView = LayoutInflater.from(this.context).inflate(R.layout.spinner_layout, null);
  25.         TextView textView = (TextView) convertView.findViewById(R.id.spinner_text);
  26.         textView.setText(((dataModel) getItem(position)).item);
  27.         ImageView imageView = (ImageView) convertView.findViewById(R.id.imageView);
  28.         imageView.setImageBitmap(((dataModel) getItem(position)).img);
  29.         return  convertView;
  30.     }
  31. }
複製代碼
SpinnerLayout
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     android:orientation="vertical" android:layout_width="match_parent"
  4.     android:layout_height="match_parent">

  5.     <ImageView
  6.         android:layout_width="wrap_content"
  7.         android:layout_height="wrap_content"
  8.         android:id="@+id/imageView"
  9.         android:layout_gravity="center_horizontal"
  10.         android:src="@drawable/abc_ic_star_black_36dp"
  11.         android:layout_alignParentTop="true"
  12.         android:layout_alignParentEnd="true" />

  13.     <TextView
  14.         android:layout_width="wrap_content"
  15.         android:layout_height="wrap_content"
  16.         android:textAppearance="?android:attr/textAppearanceLarge"
  17.         android:text="Large Text"
  18.         android:id="@+id/spinner_text"
  19.         android:layout_alignParentTop="true"
  20.         android:layout_alignParentStart="true" />

  21. </RelativeLayout>
複製代碼
附件: 您需要登錄才可以下載或查看附件。沒有帳號?註冊

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

返回列表