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

Android / Changing the text in specific spinner item

我正在为珠宝店设计一个移动应用程序。在 Android 中,对于珠宝产品描述页面,我有一个带有一些戒指尺寸的 Spinner,其文本 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 尺寸,用于不同的克拉单选按钮。

同时,在同一个 activity 中对应其他文本视图的其他详细信息,例如价格、折扣、制作费用、黄金重量、交货日期、产品是否准备好发货等。默认为戒指尺寸 5.

那么,如果选择了不同的 carat 单选按钮,是否可以通过编程方式更改特定 Spinner 项目的文本?是否可以在不创建新数组列表、向其中添加所有新文本并再次使用数组适配器的情况下实现这一目标?如果是的话怎么办?

试试下面的代码,

Select索引位置2的Spinner元素 (它将 select 来自 Spinner 的第三个 element/item)

s1.setSelection(2);

如果 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);
}