当前位置: 首页 > 知识库问答 >
问题:

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

燕实
2023-03-14

我有一个有一些价值的旋转器

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

当用户选择user Defined时,他可以在对话框中输入一个自定义值,假设我得到的值是字符串userdef=“your choice”

我需要设置这个字符串为当前项目,而不改变旋转器选择列表,必须出现上述相同的描述,也当用户再次点击旋转器,类似于在谷歌分析Android应用程序,看到图像。

我怎么能这么做?

共有1个答案

阳俊德
2023-03-14

实现这一点的关键细节是,spinner使用的spinneradapter接口有两个不同但相关的方法:

  • getview()-创建显示在旋转器本身中的视图。
  • getDropDownView()-创建下拉弹出窗口中显示的视图。

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

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);
    }
}
mAdapter.setCustomText("This is displayed for the custom option");

由于您只是重写getview()方法,下拉显示的文本与选项本身定义的文本相同。

 类似资料:
  • 问题内容: 我想更改数据库表的列位置而不丢失数据。 例如: 当前表: 到 问题答案: 试试这个:

  • 我想在不丢失数据的情况下更改数据库表的列位置。 例如: 当前表格: 到

  • 虽然我的问题主题似乎是许多PDF操作包和工具都支持的特性,但我需要明确指出,我不想旋转PDF。 我有一个PDF,它显示了一个纵向(A4),尺寸为WxH 297x210(A4旋转)。 现在,我需要实现的是,这个PDF有横向方向,同时保留尺寸。 我不确定这需要我做什么。 如果我使用Adobe Illustrator将文档格式更改到所需的位置,我还需要旋转内容。如果我将此页面放入设计糟糕的PDF中,此页

  • 我有一堆CSV文件,它们是作为数据流读取的。对于每个dataframe,我希望更改一些列名,如果某个dataframe中存在特定列: column_name_update_map={'aa':'xx';'bb':'yy'}

  • 出于某种原因,我的旋转器中选定项的文本颜色为白色。以下是活动的代码: 下面是simple_spinner_item的XML: 下拉项显示为红色,但不显示所选项。我试图将XML中的textColor更改为selector:并创建了这个选择器: 但是所选项目的文本颜色仍然是白色。所以我尝试在OnItemSelectedListener中这样做: 还是白色的... 为什么会发生这种情况,我如何修复它?谢

  • 问题内容: 我想在字体为时使用光标。 那可能吗? 问题答案: 您可以定制一个。