У меня есть форма Android, которая должна обновляться в зависимости от выбора. Форма в настоящее время состоит из 2 прядильщиков (A и B). Спиннер B не создается, пока не будет сделан выбор Spinner A. После того, как выбор сделан, B будет отображаться в представлении, и его содержимое динамически заполняется на основе выбора A. Вот мой код:
public class MyForm extends Activity
{
private final int SEL_ACTIVATE = 0;
private final int SEL_DEACTIVATE = 1;
private static final String[] actionList = {"Activate", "Deactivate" };
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
table = (TableLayout) findViewById(R.id.table);
showListA(table);
}
public void showListA(View v)
{
rowAction = new TableRow(this);
Spinner spinner = new Spinner(this);
spinner.setPrompt("Select...");
spinner.setOnItemSelectedListener(
new OnItemSelectedListener()
{
public void onItemSelected(AdapterView<?> parent, View v, int position, long id)
{
switch (position)
{
case SEL_ACTIVATE:
case SEL_DEACTIVATE:
showListB(v);
break;
}
}
public void onNothingSelected(AdapterView<?> arg0)
{
// TODO Auto-generated method stub
}
});
ArrayAdapter<String> adapter = new ArrayAdapter<String> (this, android.R.layout.simple_spinner_item, actionList);
adapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
spinner.setAdapter(adapter);
rowAction.addView(tvAction);
rowAction.addView(spinner);
table.addView(rowAction, new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
}
...
}
Этот код работает правильно. Когда в списке выбраны «Активировать» или «Деактивировать», выполняется showListB()
, что очень похоже на showListA()
в том, как он создает новую строку, содержащую метку и счетчик.
Проблема в том, что по умолчанию «Активировать» отображается в Spinner, который выполняет showListB()
, и сразу же создается вторая часть формы на основе параметра «Активировать». Единственный обходной путь, который я могу придумать, - это добавить третье поле в Spinner следующим образом:
private static final String[] actionList = {"None", "Activate", "Deactivate" };
...
switch (position)
{
case SEL_NONE:
break;
case SEL_ACTIVATE:
case SEL_DEACTIVATE:
showListB(v);
break;
}
Это работает ... но мне не нужен третий вариант в списке. Я просто хочу, чтобы он по умолчанию был пустым или отображал какой-то текст «подсказки», которого нет в списке после его нажатия. Это возможно?
Спасибо
РЕДАКТИРОВАТЬ:
xml содержимое:
<Spinner
android:id="@+id/spinnerAction"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>