Android 元件 Adapter、Spinner
1.基本應用:
使用介紹: Spinner 下拉式選單的應用(靜態)
關鍵圖示 :
記憶卡(資源) 種類非常多種,如果要把記憶卡的內容呈現在螢幕上(View),
我們勢必要有一個轉接器,而這一個轉接器就是Adapter。
我們勢必要有一個轉接器,而這一個轉接器就是Adapter。
我們避免程式過於肥大 且不易閱讀,所以這樣改寫一下
我們開始來實現這個功能吧
JAVA
|
package com.example.andy.app_spinner;
import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class MainActivity extends AppCompatActivity {
private Context context;
private Spinner spinner;
private List<Integer> list;
private ArrayAdapter<Integer> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findID();
initialAdapter();
}
private void findID() {
spinner = (Spinner) findViewById(R.id.spinner);
context = this;
}
private void initialAdapter() {
//我們先創造一個陣列,並再陣列放入幾個資料
list = new ArrayList<Integer>();
list.add(0);
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
//我們再創造一個配接線 (Context,選單布局呈現方式,List<>)
adapter = new ArrayAdapter<Integer>(context, android.R.layout.simple_spinner_item, list);
//把設定完成的Adapter設定到 Spinner中
//非常的抽象 所以我們可以用圖來表示。
spinner.setAdapter(adapter);
//當我們選擇 下拉式選單的 選項時需要做什麼事情,就必須@override這個方法
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(context, list.get(position).toString(), Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {}
});
}
|
Layout
|
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.andy.app_spinner.MainActivity"
android:weightSum="1">
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:onClick="onclick"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" + "
android:id="@+id/btn_增加" />
<Button
android:onClick="onclick"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="-"
android:id="@+id/btn_減少" />
</LinearLayout>
<Spinner
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/spinner"
android:layout_gravity="center_horizontal"
android:layout_weight="0.34" />
</LinearLayout>
|
實現後的預覽圖
2.延伸應用:
使用介紹:點擊按鈕,動態增加減少Spinner下拉式選單的選項
我們開始來實現這個功能吧
JAVA
|
package com.example.andy.app_spinner;
import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class MainActivity extends AppCompatActivity {
private Context context;
private Spinner spinner;
private List<Integer> list;
private ArrayAdapter<Integer> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findID();
initialAdapter();
}
private void findID() {
spinner = (Spinner) findViewById(R.id.spinner);
context = this;
}
private void initialAdapter() {
list = new ArrayList<Integer>();
//先把靜態的註解掉
// list.add(0);
// list.add(1);
// list.add(2);
// list.add(3);
// list.add(4);
// list.add(5);
adapter = new ArrayAdapter<Integer>(context, android.R.layout.simple_spinner_item, list);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(context, list.get(position).toString(), Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {}
});
}
//開始實現動態的功能
public void onclick(View view) {
//中介者設計模式
switch (view.getId()) {
case R.id.btn_增加:
//創造一個亂數,並記錄在number中
int number = new Random().nextInt(100);
//放進陣列中
list.add(number);
//讓adapter的參數給刷新
adapter.notifyDataSetChanged();
break;
case R.id.btn_減少:
//當陣列的大小>0 我才能執行
if (list.size() > 0) {
//陣列要刪除,第0個索引
list.remove(0);
}
//讓adapter的參數給刷新
adapter.notifyDataSetChanged();
break;
}
}
}
|
棒棒!
回覆刪除鰻厲害的
回覆刪除