【问题标题】:how to change default text for spinners如何更改微调器的默认文本
【发布时间】:2015-12-21 12:23:48
【问题描述】:

我在代码中使用了三个微调器,我为三个微调器分配了一个数组,但我想更改三个微调器的默认文本。我在微调器中获取数组详细信息。

Spinner sp1,sp2,sp3;
ArrayAdapter<CharSequence> adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_carrer_seq);
    apply = (Button) findViewById(R.id.button3);
    sp1 = (Spinner) findViewById(R.id.spinner);
    sp2 = (Spinner) findViewById(R.id.spinner2);
    sp3 = (Spinner) findViewById(R.id.spinner3);

    adapter = ArrayAdapter.createFromResource(this,R.array.current, R.layout.spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    sp1.setPrompt("Developers(2-3 years)");
    sp1.setAdapter(adapter);
    sp2.setPrompt("Senior Developers(4-5 years)");
    sp2.setAdapter(adapter);
    sp3.setPrompt("Project Lead(6-7 years)");
    sp3.setAdapter(adapter);

spinner_item.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    style="?android:attr/spinnerItemStyle"
    android:singleLine="true"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ellipsize="marquee"
    android:textColorHint="@color/text"
    android:textColor="#808080"/>

【问题讨论】:

  • 是的,我试过了,但在这里我只想更改我的三个微调器的默认文本。
  • 你试过上面的链接吗......或者你没有得到它??
  • 是的,它没有得到它。它获取数组中的内容
  • 您是否为微调器创建了自定义布局?

标签: android android-spinner


【解决方案1】:

使用下面的代码行

  Spinner sp1,sp2,sp3;
ArrayAdapter<CharSequence> adapter;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_carrer_seq);
    apply = (Button) findViewById(R.id.button3);
    sp1 = (Spinner) findViewById(R.id.spinner);
    sp2 = (Spinner) findViewById(R.id.spinner2);
    sp3 = (Spinner) findViewById(R.id.spinner3);

   sp1.setAdapter(new CustomSpinnerAdapter(this, R.layout.spinner_row, YOUR_ARRYLIST, "Developers(2-3 years)"));

   sp2.setAdapter(new CustomSpinnerAdapter(this, R.layout.spinner_row, YOUR_ARRYLIST, "Senior Developers(4-5 years)"));

   sp3.setAdapter(new CustomSpinnerAdapter(this, R.layout.spinner_row, YOUR_ARRYLIST, "Project Lead(6-7 years)"));

然后为它创建自定义适配器

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;
    }
    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;
}

}

【讨论】:

  • 我想更改默认文本而不是颜色。
  • 对不起兄弟....@HeamanthVarma ...因为没有让您...您想在微调器上设置什么默认文本??
  • 是的,我想在代码中将我的三个微调器的默认文本设置为上面的微调器,作为开发人员、高级人员和项目负责人。这三个微调器具有相同的细节,但我只需要更改默认文本。
  • 在arraylist的第一项上...您可以将这些字符串分别添加到他们的ARRYLIST上...并尝试一下...
  • array_list 与三个微调器相同,但默认文本应更改。
【解决方案2】:

也许这会有所帮助:

    current.add("value1");
    current.add("value2");
    current.add("value3");

    current.add("Choose Size"); //adding String at the end of ArrayList
    Collections.reverse(current); //Last Item Will Be Shown As A Spinner Title

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, sizes);
    spinner.setAdapter(adapter);

*** 你必须将值最后添加为:

 current.add("Choose Size");

然后在设置适配器之前反转数组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-19
    • 1970-01-01
    • 2013-08-21
    • 2011-07-13
    • 2011-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多