【发布时间】:2020-01-02 16:03:06
【问题描述】:
我正在为珠宝店设计一款移动应用。在 Android 中,对于珠宝产品描述页面,我有一个带有一些戒指尺寸的 Spinner,它们的文本 5 到 25 使用自定义数组列表适配器设置。
我有一个 18 carat 或 22 carat 的单选组,它们与微调器一起使用,如果选择了不同的克拉单选按钮,那么微调器文本应仅针对几个环尺寸随之更改,例如例如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 大小的不同克拉单选按钮。
另外,同一活动中其他文本视图对应的其他详细信息,例如价格、折扣、制作费用、黄金重量、交货日期、产品是否准备好发货等,自动默认为戒指尺寸@ 987654331@.
那么,如果选择了不同的克拉单选按钮,是否可以通过编程方式更改特定 Spinner 项目的文本?是否可以在不创建新数组列表、将所有新文本添加到其中并再次使用数组适配器的情况下实现这一目标?如果是的话怎么办?
【问题讨论】:
-
我猜你正在将适配器应用于微调器上的单选按钮更改。如果 18 克拉和 22 克拉的戒指尺寸相同,则无需重新设置适配器。
-
@peco:如果使用数组适配器,那么使用
setAdapter函数调用,微调器项会自动默认为微调器列表中的第一个元素。有什么办法可以避免这种情况并利用setSelection函数调用再次设置先前选择的微调器项? -
所以基本上你的一个数组只包含像 17 和其他 17 这样的数字 - 我在 24 小时内发货对吗?
-
如果根本不想使用 setAdapter 和两个不同的数组。您仍然可以实现这一点,但您需要在微调器的 onItemSelectedListener 上添加条件。这不是一个好方法。
标签: android arraylist spinner android-arrayadapter android-adapter