Android微调器设置默认文本

 PHP菜鸟 发布于 2023-02-12 11:21

我在我的应用程序中实现了一个微调器.我正在显示学校列表,但我想要一个默认值/提示,以便用户知道选择一所学校.我也希望这样做而不必将提示作为列表项.有任何想法吗?

到目前为止,这是我的微调器代码:

selectSchoolSpinner = (Spinner) findViewById(R.id.select_school_spinner);
spinnerSchoolList = new ArrayList();

spinnerSchoolList.add("Please select School"); 
//I don't want to have a prompt like the latter     

ArrayAdapter spinnerAdapter = new ArrayAdapter(this,
    android.R.layout.simple_spinner_item, spinnerSchoolList);

spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

selectSchoolSpinner.setAdapter(spinnerAdapter);

Alon Levanon.. 19

您应该在其构造函数中为所需文本创建带有String的自定义ArrayAdapter.然后,您应该使用默认文本切换数组的第一个元素,然后在用户单击微调器后,它应切换回原始数组.

例:

活动类:

    public class SpinnerActivity extends Activity {

    Spinner spinner;
    String defaultTextForSpinner = "Your deafult text here";
    String[] arrayForSpinner = {"One", "Two", "Three"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_spinner);

        spinner = (Spinner) findViewById(R.id.your_spinner);
        spinner.setAdapter(new CustomSpinnerAdapter(this, R.layout.spinner_row, arrayForSpinner, defaultTextForSpinner));
    }
    }

CustomSpinnerAdapter类:

    public class CustomSpinnerAdapter extends ArrayAdapter{

    Context context;
    String[] objects;
    String firstElement;
    boolean isFirstTime;

    public CustomSpinnerAdapter(Context context, int textViewResourceId, String[] objects, String defaultText) {
        super(context, textViewResourceId, objects);
        this.context = context;
        this.objects = objects;
        this.isFirstTime = true;
        setDefaultText(defaultText);
    }

    @Override
    public View getDropDownView(int position, View convertView, ViewGroup parent) {
        if(isFirstTime) {
            objects[0] = firstElement;
            isFirstTime = false;
        }
        return getCustomView(position, convertView, parent);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) { 
        notifyDataSetChanged();
        return getCustomView(position, convertView, parent);
    }

    public void setDefaultText(String defaultText) {
        this.firstElement = objects[0];
        objects[0] = defaultText;
    }

    public View getCustomView(int position, View convertView, ViewGroup parent) {

        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View row = inflater.inflate(R.layout.spinner_row, parent, false);
        TextView label = (TextView) row.findViewById(R.id.spinner_text);
        label.setText(objects[position]);

        return row;
    }

    }


Plo_Koon.. 12

尝试使用setSelection方法设置默认文本:

spinner.setSelection(adapter.getPosition(DEFAULT_CURRENCY_TYPE))

并查看此链接:如何使用初始文本"选择一个"制作Android Spinner.它非常有用(@aaronvargas答案就是你需要的).

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有