2016-04-26 100 views
-1

我有一個微調有三​​個選項(「一」,「兩」,「三」)。當用戶選擇「One」時,微調框提示變爲「One」。當用戶選擇「三」時,DatePickerDialog開始並基於用戶輸入,我想將提示更改爲自定義消息。 與此同時我希望微調器保持值「一」,「二」,「三」。微調選擇更改微調Promt

有沒有辦法做到這一點?

這是我到目前爲止已經完成,

MainActivity

spinner=(MySpinner)findViewById(R.id.spinner); 
    SpinnerAdapter sa=new SpinnerAdapter(getApplicationContext(), android.R.layout.simple_spinner_item, new String[]{"One", "Two", "Three"}); 
    spinner.setAdapter(sa); 
    spinner.setOnItemSelectedListener(this); 

聽者

@Override 
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
      switch (position) { 
       case 0: var = 0; break; 
       case 1: var = 1; break; 
       case 2: var = 3; 

       Calendar cal = Calendar.getInstance(); 
       DatePickerDialog dpd = DatePickerDialog.newInstance(this, cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH)); 
       dpd.show(getFragmentManager(), "fg");break; 
       } 

       FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction(); 
       fragmentTransaction.replace(R.id.frame_layout, new FRTransactions()).commit();       
    } 

SpinnerAdapter

public class MySpinner extends Spinner { 

int previousPos=-1; 

public MySpinner(Context context) { 
    super(context); 
} 

@Override 
public void setSelection(int position) { 
    super.setSelection(position); 

    if (position==getSelectedItemPosition()&&previousPos==position){ 
     getOnItemSelectedListener().onItemSelected(null, null, position, 0); 
    } 
    previousPos=position; 
} 


class SpinnerAdapter extends ArrayAdapter implements Android.widget.SpinnerAdapter { 

Context context; 
TextView tv; 
String[] strings; 

public SpinnerAdapter(Context context, int resource, String[] objects) { 
    super(context, resource, objects); 
    this.context=context; 
    this.strings=objects; 
} 


@Override 
public View getDropDownView(int position, View convertView, ViewGroup parent) { 

    return makeLayout(position, convertView, parent, android.R.layout.simple_spinner_dropdown_item); 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    int pos=position; 

    if (parent instanceof AdapterView) 
     pos = ((AdapterView) parent).getSelectedItemPosition(); 

    return makeLayout(pos, convertView, parent, android.R.layout.simple_spinner_dropdown_item); 
} 

private View makeLayout(final int position, final View convertView, final ViewGroup parent, final int layout){ 

    if (convertView!=null) tv=(TextView)convertView; 
    else tv=(TextView)LayoutInflater.from(context).inflate(android.R.layout.simple_spinner_dropdown_item, parent, false); 

tv.setText(strings[position]); 

    return tv; 
} 

@Override 
public int getCount() { 
    return strings.length; 
} 
} 
+0

使用spinner.setPrompt( 「新的提示信息」); – Pehlaj

回答

0

嗯,那麼setPrompt()方法呢?
您可以在您的onItemSelected()方法中使用它。

+0

嗯,我試過,但由於某種原因setPrompt()沒有解僱。 – tasgr86

+0

把它放進一個處理程序然後 新處理程序()postDelayed(新的Runnable(){ 公共無效的run(){ \t spinner.setPrompt( 「新提示信息」);} } ,200)。 – Pehlaj

+0

好吧,那也行不通。我認爲它與spinnerMode.Spith對話setPrompt()工作正常,與下拉它不。 – tasgr86

0

嘗試

new Handler().postDelayed(new Runnable() { 
    public void run() { 
     spinner.setPrompt("New prompt message"); 
    } 
}, 200);