如何在 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) {
}
});
}
}
这是我们应用程序的最终输出。
输出: