android - Android / 更改特定微调器项目中的文本
问题描述
我正在为珠宝店设计一个移动应用程序。在 Android 中,对于珠宝产品描述页面,我有一个带有一些戒指尺寸的 Spinner,它们的文本通过使用自定义数组列表适配器5
进行设置。25
我有一个 Radio Group of 18 carat
or22 carat
与 Spinner 一起工作,如果选择了不同的克拉单选按钮,那么微调器文本应该只针对几个戒指尺寸随之改变,例如,17 - Ships in 24 hours
如果戒指尺寸准备好发货18
如果戒指尺寸是根据客户的订单新制作的。
为此,如果选择了不同大小的单选按钮,我将创建一个新的数组列表,再次为微调器添加所有新文本,然后再次使用数组适配器。
ArrayAdapter adapter = new ArrayAdapter(Description.this, android.R.layout.simple_spinner_item, sizes);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
s1.setAdapter(adapter);
这样做时,微调器始终自动默认为第一个项目5
,即使之前选择的微调器项目是,例如,17
不同克拉单选按钮的大小。
并且,同一活动中其他文本视图对应的其他详细信息,例如价格、折扣、制作费用、黄金重量、交货日期、产品是否准备好发货等,自动默认为戒指尺寸5
。
那么,如果选择了不同的克拉单选按钮,是否可以通过编程方式更改特定 Spinner 项目的文本?是否可以在不创建新数组列表、将所有新文本添加到其中并再次使用数组适配器的情况下实现这一目标?如果是这样怎么办?
解决方案
如果sizes
是 ArrayList,要更改微调器中的特定项目,请尝试使用
sizes.set(index,newItem)
如果要将第 3 项更改为 10,
sizes.set(2,10) //I am assuming the sizes arraylist is integer arraylist. if not change to required data type
然后执行
adapter.notifyDataSetChanged() // This will refresh you spinner.
而不是重新设置微调器上的适配器。然后如果你愿意,执行
s1.setSelection(2)
s1.setAdapter(adapter);
应该只执行一次(当微调器初始化时)。
public void refreshSpinner(int index,int newValue){
sizes.set(index,newValue);
adapter.notifyDataSetChanged();
//Only if you want to select the new value
s1.setSelection(index);
}
推荐阅读
- vim - 是否可以在防火墙后面使用 coc.nvim 扩展?
- php - WC_Order->get_items() 返回空项目
- c# - 在 SSMS 中查询返回结果,但在 C# 中没有
- google-sheets - 存在匹配项时将单元格值合并到一个单元格中
- javascript - 将 IndexedDB 实例作为 Electron 中的不同网站访问
- visual-studio-code - 在 Visual Studio Code 的工作区中展开文件?
- here-api - 当路由 API 没有问题时,HERE Fleet Telemetics API 找不到路由?
- c# - 7 Zip 提取错误:标头错误 密码错误
- wpf - ProgressChanged 不更新进度条
- c# - 如何获得图像的中心 x 和 y