gpt4 book ai didi

android - 如何在不更改关联的选择列表项的情况下设置当前微调器文本

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:25:04 25 4
gpt4 key购买 nike

我有一个带有一些值的 Spinner

| Monday       | 
| Thuesday |
| Wednesday |
| Thursday |
| Friday |
| Saturday |
| USER DEFINED |

当用户选择USER DEFINED他可以在对话框中输入一个自定义值,假设我得到这个值是 String userDef="Your choice" .

我需要将此字符串设置为当前项目,而不更改微调器选择列表,它必须与上述相同,当用户再次点击微调器时,就像在 Google Analytics Android 应用程序中一样,请参见图像。

未点击的微调器 Unclicked spinner Google Analytics点击微调器 clicked spinner Google Analytics

我该怎么做?

最佳答案

实现这个的关键细节是 SpinnerAdapter Spinner 使用的接口(interface)有两个不同但相关的方法:

因此,要使某个项目在弹出窗口中与在微调器本身中显示不同,您只需以不同方式实现这两种方法。根据您的代码的具体情况,细节可能会有所不同,但一个简单的示例如下:

public class AdapterWithCustomItem extends ArrayAdapter<String>
{
private final static int POSITION_USER_DEFINED = 6;
private final static String[] OPTIONS = new String[] {
"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Custom..." };

private String mCustomText = "";

public AdapterWithCustomItem(Context context){
super(context, android.R.layout.simple_spinner_dropdown_item, OPTIONS);
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
if (position == POSITION_USER_DEFINED) {
TextView tv = (TextView)view.findViewById(android.R.id.text1);
tv.setText(mCustomText);
}

return view;
}

public void setCustomText(String customText) {
// Call to set the text that must be shown in the spinner for the custom option.
mCustomText = customText;
notifyDataSetChanged();
}

@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
// No need for this override, actually. It's just to clarify the difference.
return super.getDropDownView(position, convertView, parent);
}
}

然后,当用户输入自定义值时,您只需调用适配器上的setCustomText() 方法,将您想要显示的文本。

mAdapter.setCustomText("This is displayed for the custom option");

产生以下结果:

enter image description here

因为您只是重写了 getView() 方法,所以下拉菜单仍然显示与选项本身定义的相同的文本。

关于android - 如何在不更改关联的选择列表项的情况下设置当前微调器文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25207200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com