Android /更改特定微调器项目中的文本

时间:2019-08-29 11:25:27

标签: android arraylist spinner android-arrayadapter android-adapter

我正在为珠宝店设计一个移动应用程序。在Android的珠宝产品描述页面中,我有一个带有一些戒指尺寸的微调框,其文本525通过使用自定义数组列表适配器进行设置。

我有一个18 carat22 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

此外,与同一活动中其他“文本视图”相对应的其他详细信息,例如价格,折扣,制作费用,黄金重量,交货日期,产品是否准备好发货等,都会自动默认为戒指尺寸{ {1}}。

因此,如果选择了其他克拉单选按钮,是否可以通过编程方式更改特定微调器项目的文本?是否可以在不创建新数组列表的情况下实现这一点,而是将所有新文本添加到其中并再次使用数组适配器?如果可以的话?

2 个答案:

答案 0 :(得分:1)

尝试以下代码,

在索引位置2选择Spinner元素 (它将从微调框选择第三个元素/项目)

s1.setSelection(2);

答案 1 :(得分:1)

如果 for( var i = 0 ; i <= 28; i=i+7 ) { _activities[_currentDay.add(Duration(days:i))]=activityNames.toList(); } 是一个ArrayList,要更改微调器中的特定项目,请尝试使用

sizes

如果要将第三项更改为10,

sizes.set(index,newItem)

然后执行

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);