【问题标题】:Item selection in spinner in AndroidAndroid中微调器中的项目选择
【发布时间】:2015-12-24 01:51:05
【问题描述】:

我有带有默认文本的微调器。默认文本在用于显示微调器项目的数组中不可用。为此,我正在使用自定义数组适配器。

例如,我显示的默认文本是 14:13,但在我的数组中,文本是 14:15。我想为这个项目做 setSelection (14:15)。我能为此做些什么?

public class CustomSpinnerAdapter extends ArrayAdapter<String>{

            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;
                }
//              ((TextView) convertView).setGravity(Gravity.CENTER_VERTICAL);
                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.time_item, parent, false);
                TextView label = (TextView) row.findViewById(R.id.txt_time);
                label.setText(objects[position]);
                return row;
            }


            }

下图说明了确切的要求。如果您可以在我们开始活动时首先观察到,微调器显示默认文本“10:39”,但在微调器数组列表中,我们的值是 10:37 和 10:50。所以我想将其显示为附近的值。

现在我正在显示默认值,当我们点击它时,微调器值会正常工作。但我想要的是当我点击微调器时它会自动滚动到 10:37 并显示它将被选中。

【问题讨论】:

  • 当我将arraylist中可用的变量位置提供给适配器类时,我得到了它。对于用于setSelection(位置)的选择。

标签: android user-interface spinner adapter


【解决方案1】:

您可以将此代码用于微调适配器。

Spinner spinner = (Spinner) findViewById(R.id.your_spinner);
ArrayAdapter adapter = new ArrayAdapter(YourActivity.this, R.layout.spinner_item, array_spinner);
//array_spinner is your array to displayed on spinner selection

spinner.setAdapter(adapter);
spinner.setPrompt("Choosed item");
spinner.setSelection(int position); //position of item in your array_spinner

我希望这会有所帮助。

【讨论】:

  • 嗨BatuhanC,我想设置默认文本,当你点击微调器时,我必须自动向下滚动下拉列表中的特定项目。所以它将是选定的项目。我使用上面的方法完成了默认文本自定义适配器。
猜你喜欢
  • 1970-01-01
  • 2020-10-15
  • 1970-01-01
  • 1970-01-01
  • 2019-05-08
  • 2012-01-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多