📜  如何在 Android 中实现依赖下拉菜单?

📅  最后修改于: 2022-05-13 01:55:13.977000             🧑  作者: Mango

如何在 Android 中实现依赖下拉菜单?

依赖下拉的概念使用两个微调器,其中一个微调器的值取决于另一个微调器。下拉是使用微调器实现的,微调器提供了一种从集合中选择一个值的快速方法。在默认状态下,微调器显示其当前选定的值。触摸微调器会显示一个包含所有其他可用值的下拉菜单,用户可以从中选择一个新值。在本文中,我们将学习如何在 android studio 中实现依赖下拉。

我们将在本文中构建什么?

在本文中,我们将使用两个下拉菜单,其中第二个菜单的值将直接取决于第一个菜单,即如果第一个菜单的值会增加,那么第二个菜单的值也会增加,如果我们会减少第一个菜单的值,那么第二个菜单的值也将减少相同的差异。这是我们将要构建的应用程序的示例视频。请注意,我们将用Java语言实现这个项目。

分步实施

步骤 1:创建一个新项目

  • 打开一个新项目。
  • 我们将使用Java语言开发 Empty Activity。保持所有其他选项不变。
  • 您可以在方便时更改项目的名称。
  • 将有两个名为 activity_main.xml 和 MainActivity 的默认文件。Java

如果您不知道如何在 Android Studio 中创建新项目,可以参考如何在 Android Studio 中创建/启动新项目?

第 2 步:使用 activity_main.xml 文件

导航到 app > res > layout > activity_main.xml 并将以下代码添加到该文件。下面是 activity_main.xml 文件的代码。

XML



  
    
    
  
  
  


XML




Java
package com.example.dependentdropdown;
  
import androidx.appcompat.app.AppCompatActivity;
  
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
  
import java.util.ArrayList;
  
public class MainActivity extends AppCompatActivity {
  
    // Initialize variables
    Spinner spMin,spMax;
    ArrayList pricelist=new ArrayList<>();
    ArrayList minList=new ArrayList<>();
    ArrayList maxList=new ArrayList<>();
    ArrayAdapter minAdapter,maxAdapter;
  
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
  
        // assign variables
        spMin=findViewById(R.id.sp_min);
        spMax=findViewById(R.id.sp_max);
  
        // use for loop
        for(int i=1;i<=15;i++)
        {
            // add values in price list
            pricelist.add("\u20b9"+i+"Lac");
            // check condition
            if(i>1)
            {
                // Not include first value  in max list
                maxList.add("\u20b9"+i+"Lac");
            }
  
            if(i!=15)
            {
                // Not include  last value in min list
                minList.add("\u20b9"+i+"Lac");
            }
        }
        
        // Initialize adapter
        minAdapter=new ArrayAdapter<>(this,R.layout.item_dropdown,minList);
        maxAdapter=new ArrayAdapter<>(this,R.layout.item_dropdown,maxList);
  
        // set adapter
        spMin.setAdapter(minAdapter);
        spMax.setAdapter(maxAdapter);
  
        // set item selected listener on min spinner
        spMin.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView parent, View view, int position, long id) {
                // clear max list
                maxList.clear();
                // use for loop
                for(int i=position+1;i parent) {
  
            }
        });
    }
}


第 3 步:使用 item_dropdown.xml 文件

按照路径 app > res > 布局 > 右键单击 > 新建 > 布局资源文件并创建一个名为 item_main.xml 的新文件。在 item_dropdwon.xml 文件中使用以下代码 -

XML




第 4 步:使用 MainActivity。Java

转到 MainActivity。 Java文件并参考以下代码。下面是 MainActivity 的代码。 Java文件。代码中添加了注释以更详细地理解代码。

Java

package com.example.dependentdropdown;
  
import androidx.appcompat.app.AppCompatActivity;
  
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
  
import java.util.ArrayList;
  
public class MainActivity extends AppCompatActivity {
  
    // Initialize variables
    Spinner spMin,spMax;
    ArrayList pricelist=new ArrayList<>();
    ArrayList minList=new ArrayList<>();
    ArrayList maxList=new ArrayList<>();
    ArrayAdapter minAdapter,maxAdapter;
  
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
  
        // assign variables
        spMin=findViewById(R.id.sp_min);
        spMax=findViewById(R.id.sp_max);
  
        // use for loop
        for(int i=1;i<=15;i++)
        {
            // add values in price list
            pricelist.add("\u20b9"+i+"Lac");
            // check condition
            if(i>1)
            {
                // Not include first value  in max list
                maxList.add("\u20b9"+i+"Lac");
            }
  
            if(i!=15)
            {
                // Not include  last value in min list
                minList.add("\u20b9"+i+"Lac");
            }
        }
        
        // Initialize adapter
        minAdapter=new ArrayAdapter<>(this,R.layout.item_dropdown,minList);
        maxAdapter=new ArrayAdapter<>(this,R.layout.item_dropdown,maxList);
  
        // set adapter
        spMin.setAdapter(minAdapter);
        spMax.setAdapter(maxAdapter);
  
        // set item selected listener on min spinner
        spMin.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView parent, View view, int position, long id) {
                // clear max list
                maxList.clear();
                // use for loop
                for(int i=position+1;i parent) {
  
            }
        });
    }
}

这是我们应用程序的最终输出。

输出: