Android借助于Spinner可以动态添加删除项目

介绍

在学习Android的spinner控件后,需要完成一个EditText文本框输入然后对spinner的选项进行增删的过程,我从开始到最终完成提供完整的代码供大家交流学习。

运行截图

先上运行结果以便于让您知道这篇文章对您是否有用)
在这里插入图片描述

实施步骤详解

第一步:对activity_main.xml文件进行修改,即进行页面布局

这一共分为四个部分,一个Edittext,两个Button,一个Spinner,并对他们的位置大小和颜色等样式进行修改。具体代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="vertical">

    <EditText
        android:id="@+id/EditInfo"
        android:layout_width="fill_parent"
        android:layout_height="100dp"
        android:layout_marginTop="30dp"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:paddingLeft="20dp"
        android:textSize="50sp"
        android:hint="@string/editInfo" />

    <Button
        android:id="@+id/add_proj"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:layout_marginTop="30dp"
        android:layout_marginRight="20dp"
        android:textSize="30sp"
        android:background="@drawable/btn_shape"
        android:text="@string/add"
        />
    <Button
        android:id="@+id/delete_proj"
        android:layout_marginTop="30dp"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:background="@drawable/btn_shape"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textSize="30sp"
        android:text="@string/delete"/>
    <Spinner
        android:id="@+id/spinner_view"
        android:layout_marginTop="30dp"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:layout_width="fill_parent"
        android:layout_height="50dp"/>
</LinearLayout>

第二部:将代码的样式进行修改(先做出样式再完成功能)

因为演示所以只对Button按钮的样式进行了稍微的修改;因为各个组件的样式修改方法都大同小异。
具体过程是;1、在res-drawable目录上右击,选择New,选择Drawable Resource File
在这里插入图片描述
2、在Root element 选项下选择shape,在File name后填写文件名称
在这里插入图片描述
最后再文件中输入以下代码:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
    <solid android:color="#C3C3C3"/>
    <corners android:radius="10dp"/>
    <stroke android:color="#000000" android:width="3dp"/>
</shape>

第三步:设置静态数据(因为第一次打开有点数据在spinner里总是好看的)

选择res目录下的values下的strings.xml文件点击打开;在resource根节点下创建一个string-array子节点
在这里插入图片描述
具体代码如下

<resources>
    <string-array name="sprinner">
        <item>吃饭</item>
        <item>睡觉</item>
        <item>打豆豆</item>
    </string-array>
</resources>

第四步(最重要的一步)

找到MainActivity文件然后打开,输入以下代码(因为代码中每一步都写了清晰的注释所以直接上代码)!

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {
    /*1先对组件进行声明*/
    EditText editText;
    Button add;
    Button delete;
    Spinner spinner;
    ArrayList<String> list = new ArrayList<>();
    ArrayAdapter<String> adapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        /*2通过id对组件进行后端绑定*/
        editText=findViewById(R.id.EditInfo);
        add=findViewById(R.id.add_proj);
        delete=findViewById(R.id.delete_proj);
        spinner=findViewById(R.id.spinner_view);
        /*4获取Strings.xml文件中构建的数组数据*/
        String[] value = getResources().getStringArray(R.array.action);/*因为我们的原始数据存储在string.xml文件中,所以getResource然后getStringArray;然后通过数组的id获取*/
        /*5用for循环将数组数据存储到list中*/
        for (int i=0 ;i<value.length;i++) {
            list.add(value[i]);
        }
        /*6sadapter配置数据以及配置下拉样式并且pinner绑定适配器*/
        adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,list);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);
        spinner.setPrompt("项目总览");
        /*7添加按钮监听器*/
        add.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                adapter.add(editText.getText().toString());
                setTitle("当前项目有"+String.valueOf(list.size())+"个");
            }
        });
        delete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                adapter.remove(editText.getText().toString());
                setTitle("当前项目有"+String.valueOf(list.size())+"个");
            }
        });
    }
}

注意:1、在粘贴的时候不要把你原本package的名字给粘贴没了;
2、如果你是自己手敲代码的话注意import的包的类型如果出现问题就很烦

结语

我是个刚学android的计算机学生,在学习过程中发现android在网上的资源并不是很好找,所以希望通过自己的努力能让更多对android感兴趣的人抛砖引玉,如果有意见或者想和我交流可以加我的微信,如果觉得写得不错或者对你有一点点帮助,希望可以点个赞让我小小的开心一下。最后,程序员最牛B!!!加油各位。
在这里插入图片描述

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值