Android中给Spinner或ListView添加数据

标签:

android

listview

it

分类: android学习笔记
先看ListView的api文档的说明
A view that shows items in a vertically scrolling list. The items come from the ListAdapter associated with this view.
ListView是一个垂直显示选项的滚动列表,它的数据来自ListAdapter。注意它是可以多选,多显示的。

再看Spinner的说明
A view that displays one child at a time and lets the user pick among them. The items in the Spinner come from the Adapter associated with this view.
Spinner只显示并只能选择一个选项的,它的数据来自Adapter。

就是说两者都要通过Adapter来获得数据并显出来。做法都差不多,看如下的代码,可以生成一个下拉框。

public class Select extends Spinner {

ArrayAdapter arr; // 存放数据的数组Adapter,是impl自Adapter的一种

public Select(Context context) {
super(context);
// TODO Auto-generated constructor stub

String[] strs = new String[] {
context.getString(R.string.easy),
context.getString(R.string.normal),
context.getString(R.string.hard) };

// 如果Spinner,ListView中放的内容 是TextView的,必须在res/layout中添加一个xml,
// 且该xml中的内容只能是TextView的xml,以该xml中的TextView做模生成item
arr = new ArrayAdapter(context, R.layout.list_item, strs);
this.setAdapter( arr );
// 通过这样,可以在Spinner中显示3个TextView类型的选项。
}

}

list_item.xml, 该xml中的textView将作为模板使用,可以在这里指定文字的颜色,大小等。
<?xml version="1.0" encoding="UTF-8"?>
<TextView ...>
</TextView>
筛选操作可以通过以下步骤在 Android Studio 完成: 1. 在布局文件添加 SpinnerListView 组件,并在代码初始化它们。 2. 在代码创建一个适配器对象,将数据加载到 ListView 。 3. 在代码创建一个数组列表,用于存储所有数据。 4. 在代码创建一个筛选方法,该方法接收一个字符串参数,并返回一个新的数组列表,该列表包含符合条件的数据。 5. 在代码Spinner 添加一个选择监听器,以便在用户选择筛选条件时调用筛选方法。 6. 在代码为查询按钮添加一个点击监听器,以便在用户点击时调用筛选方法。 下面是示例代码: ```java public class MainActivity extends AppCompatActivity { private Spinner spinner; private ListView listView; private Button searchButton; private ArrayAdapter<String> adapter; private ArrayList<String> dataList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); spinner = findViewById(R.id.spinner); listView = findViewById(R.id.listview); searchButton = findViewById(R.id.search_button); // 初始化数据 dataList = new ArrayList<>(); dataList.add("Apple"); dataList.add("Banana"); dataList.add("Cherry"); dataList.add("Durian"); dataList.add("Elderberry"); dataList.add("Fig"); // 初始化适配器 adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, dataList); listView.setAdapter(adapter); // 添加选择监听器 spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { String selectedItem = parent.getItemAtPosition(position).toString(); ArrayList<String> filteredList = filterData(selectedItem); adapter.clear(); adapter.addAll(filteredList); adapter.notifyDataSetChanged(); } @Override public void onNothingSelected(AdapterView<?> parent) { // do nothing } }); // 添加点击监听器 searchButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String selectedItem = spinner.getSelectedItem().toString(); ArrayList<String> filteredList = filterData(selectedItem); adapter.clear(); adapter.addAll(filteredList); adapter.notifyDataSetChanged(); } }); } private ArrayList<String> filterData(String keyword) { ArrayList<String> filteredList = new ArrayList<>(); for (String item : dataList) { if (item.toLowerCase().contains(keyword.toLowerCase())) { filteredList.add(item); } } return filteredList; } } ``` 在上面的示例,我们使用了一个包含一些水果名称的字符串列表作为数据源。我们在 `onCreate()` 方法初始化了 SpinnerListView 组件,并为它们添加了适配器。我们还在 `filterData()` 方法实现了筛选逻辑,该方法接收一个字符串参数并返回一个新的数组列表,该列表包含符合条件的数据。我们在选择监听器和点击监听器调用了该方法,并使用适配器更新了 ListView 数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值