Динамически изменять макет изнутри onItemSelectedListener - PullRequest
0 голосов
/ 09 июня 2011

У меня проблема, когда я динамически пытаюсь изменить макет при смене счетчика.Мне нужно найти основной вид изнутри метода onItemSelectedListener.Вот код

public class CustomOnItemSelectedListener implements AdapterView.OnItemSelectedListener {

    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
        if (parent.getSelectedItemPosition()==0){//Apertura di un libro

            LinearLayout lyt_libro = new LinearLayout(getApplicationContext());
            lyt_libro.setOrientation(LinearLayout.VERTICAL);
            //HERE THE PROBLEM. HOW CAN I FIND THE MAIN LAYOUT IN WHICH I CAN ADD THE lyt_libro?
            final EditText etx_numeroPagine = new EditText(getApplicationContext());
            lyt_libro.addView(etx_numeroPagine);
            [... other stuff....]
    }
    public void onNothingSelected(AdapterView parent) {
      // Do nothing.
    }

public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    ScrollView view_mainScroll = new ScrollView(getApplicationContext());
    LinearLayout lyt_main = new LinearLayout(getApplicationContext());
    view_mainScroll.addView(lyt_main);
    lyt_main.setOrientation(LinearLayout.VERTICAL);
    final Spinner spn_selectInterrogationType = new Spinner(getApplicationContext());
    lyt_main.addView(spn_selectInterrogationType);
    final ArrayAdapter<String> spn_selectInterrItemAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item);
    spn_selectInterrItemAdapter.add("Apertura di un libro");
    spn_selectInterrItemAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spn_selectInterrogationType.setAdapter(spn_selectInterrItemAdapter);
    spn_selectInterrogationType.setPrompt("Tipo di metodo utilizzato");

    spn_selectInterrogationType.setOnItemSelectedListener(new CustomOnItemSelectedListener());
    setContentView(view_mainScroll);
}

Я прокомментировал, где у меня проблема .. Что я могу сделать, чтобы найти это?Я совершенно новичок как в Java, так и в Android, так что я немного растерялся :) И у меня есть еще одно сомнение: правильно ли использовать getApplicationContext ()?Исходя из того, что я понял по API Api, лучше не использовать его, но я не понимаю, как обойтись без него ..

Спасибо большое !!: D

РЕДАКТИРОВАТЬ: я создаю весь макет из кода, так как мне нужно динамически изменять каждый элемент во время выполнения, поэтому мне нужно получить его с помощью функции или что-то вроде ... С XML у меня нетпроблемы, но они не то, что мне нужно

Ответы [ 2 ]

0 голосов
/ 09 июня 2011

Дайте имя / идентификатор в вашем xml-файле макету, который будет содержать ваш компонент.

Затем получите макет с помощью findViewById.

И добавьте свой взгляд.

Другой метод может состоять в том, чтобы объявить ваше поле в вашем XML-файле с отсутствующей видимостью атрибута и в вашем коде, в ответ на ваше событие, получить представление (по идентификатору, как указано выше) и установить дляVivilibity значение View.VISIBLE.

С уважением, Stéphane

0 голосов
/ 09 июня 2011

Вы можете использовать идентификатор в своем XML для основного макета, а в своем коде вы можете найти его с помощью findViewById (R.id.name_in_your_xmlFile)

Не забудьте также привести к представлению, которое вы получаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...