4.9、動態添加和刪除Spinner(ArrayList與Widget的依賴性)
新建一個繼承Activity類的SpinnerItemAddOrDeleteActivity,並設置佈局文件爲:spinneritemaddordelete.xml。
在佈局文件中添加一個TextView和一個EditText,2個Button按鈕。
<TextView android:id="@+id/spinneritemaddordelete_tv01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:text="@string/show_information" android:textSize="20sp" />
<EditText android:id="@+id/spinneritemaddordelete_edit01" android:layout_width="fill_parent" android:layout_height="wrap_content" />
<Button android:id="@+id/spinneritemaddordelete_btn01" style="@android:style/Widget.Button.Inset" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/add01" />
<Button android:id="@+id/spinneritemaddordelete_btn02" style="@android:style/Widget.Button.Inset" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/delete" />
<Spinner android:id="@+id/spinneritemaddordelete_spinner" android:layout_width="fill_parent" android:layout_height="wrap_content" android:entries="@array/spinnerItem" android:prompt="@string/spinnersetdropdownviewresource_spinner_prompt" android:spinnerMode="dialog" /> |
而後在Activity類中獲取這些組件。
package lyx.feng.second;
import java.util.ArrayList; import java.util.List;
import lyx.feng.simpletextdemo.R; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.Spinner; import android.widget.TextView;
public class SpinnerItemAddOrDeleteActivity extends Activity { private TextView tv = null; private EditText edit = null; private Button add = null; private Button delete = null; private Spinner spinner = null; private ArrayAdapter<String> adapter = null; private String item[]; private List<String> lists = new ArrayList<String>();
@SuppressWarnings("unchecked") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.spinneritemaddordelete); this.tv = (TextView) super .findViewById(R.id.spinneritemaddordelete_tv01); this.edit = (EditText) super .findViewById(R.id.spinneritemaddordelete_edit01); this.add = (Button) super .findViewById(R.id.spinneritemaddordelete_btn01); this.delete = (Button) super .findViewById(R.id.spinneritemaddordelete_btn02); this.spinner = (Spinner) super .findViewById(R.id.spinneritemaddordelete_spinner);
this.item = getResources().getStringArray(R.array.spinnerItem); for (int i = 0; i < item.length; i++) { lists.add(item[i]); } this.adapter = (ArrayAdapter<String>) this.spinner.getAdapter(); this.adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, this.lists); this.spinner.setAdapter(adapter);
this.add.setOnClickListener(new OnClickListener() {
@Override public void onClick(View v) { for (int i = 0; i < adapter.getCount(); i++) { if (edit.getText().toString().trim() .equals(adapter.getItem(i))) { return; } } if (edit.getText().toString().trim().equals("")) { return; } tv.setText("你添加的是:" + edit.getText().toString()); adapter.add(edit.getText().toString()); edit.setText(""); } }); this.delete.setOnClickListener(new OnClickListener() {
@Override public void onClick(View v) { if (adapter.getCount() > 0) { tv.setText("你刪除的是:" + spinner.getSelectedItem().toString()); adapter.remove(spinner.getSelectedItem().toString()); } } }); this.spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { tv.setText("你選擇的是:" + adapter.getItem(position).toString()); }
@Override public void onNothingSelected(AdapterView<?> parent) {
} }); } }
|
注意這裏要使用List集合,否則在使用ArrayAdapter類的add或者removed方法的時候會報錯。