首页 > 解决方案 > Android / 更改特定微调器项目中的文本

问题描述

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

我有一个 Radio Group of 18 carator22 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 项目的文本?是否可以在不创建新数组列表、将所有新文本添加到其中并再次使用数组适配器的情况下实现这一目标?如果是这样怎么办?

标签: androidarraylistspinnerandroid-arrayadapterandroid-adapter

解决方案


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

推荐阅读