Reputation: 15
I have create a edit text and a spinner, Into the spinner there are more than one selection those are Permanent and temporary. If i input "Brand" in edit text then in the spinner it should show only Permanent not to show temporary but if i input any other word it should display permanent or temporary
I've tried that if i enter the integer then it return the month name. E.g: If I enter 6 then in the spinner it display June.
Main Activity code
edit = (EditText) findViewById(R.id.editText);
spinner = (Spinner) findViewById(R.id.spinner);
String[] months = new DateFormatSymbols().getMonths();
ArrayAdapter adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item,months);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new
AdapterView.OnItemSelectedListener()
{
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id)
{
edit.setText(String.valueOf(position + 1));
}
});
edit.addTextChangedListener(new TextWatcher()
{
@Override
public void afterTextChanged(Editable s)
{
try
{
int nPosition = Integer.parseInt(s.toString());
if (nPosition >= 1 && nPosition <= 12)
{
spinner.setSelection(nPosition - 1);
}
}
catch(NumberFormatException nfe)
{
}
}
});
Upvotes: 0
Views: 1022
Reputation: 215
Try this one...
public class Main2Activity extends AppCompatActivity {
Spinner sp1;
ArrayAdapter<String> sAdapter1;
ArrayAdapter<String> sAdapter2;
String s1[] = {"Permanent"};
String s2[] = {"Permanent", "Temporary"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
sp1 = (Spinner) findViewById(R.id.spinner1);
EditText et = (EditText) findViewById(R.id.editText1);
sAdapter1 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, s1);
sAdapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sAdapter2 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, s2);
sAdapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
et.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
if (editable.toString().equals("Brand")) {
sp1.setAdapter(sAdapter1);
} else {
sp1.setAdapter(sAdapter2);
}
}
});
}
}
Upvotes: 2
Reputation: 107
Create two arrays
String[] array1 = new String[]{"Permanent"};
String[] array2 = new String[]{"Permanent", "Temporary"};
Now, on EditText textChanged listener initialise the spinner adapter with suitable array depending on your condition
edit.addTextChangedListener(new TextWatcher(){
@Override
public void afterTextChanged(Editable s)
{
if(s.toString.equals("BRAND")){
spinnerAdapter = new ArrayAdapter(context, android.R.layout.simple_spinner_item, array1)
}else{
spinnerAdapter = new ArrayAdapter(context, android.R.layout.simple_spinner_item, array2)
}
spinner.setAdapter(spinnerAdapter);
}
});
Upvotes: 0