Вывести текстовый результат в Android, используя addView? - PullRequest
0 голосов
/ 28 ноября 2011

На сайте Android я обнаружил статью о виджете, похожую на раскрывающийся список для выбора элементов.(Ниже приведена ссылка на сайт; на ней показаны все коды).

http://developer.android.com/resources/tutorials/views/hello-spinner.html

Для отображения сообщения после выбора планеты используется следующий код.

Toast.makeText(parent.getContext(), "Mars Selected", Toast.LENGTH_LONG).show();

Но это сообщение «Планета выбрана» будет отображаться только около 3 секунд, а затем исчезнет.Как вывести сообщение «Выбранный Марс» в виде текстового макета на экран (чтобы оно оставалось на экране постоянно, пока я не выберу другой элемент из списка)?Как я могу использовать addView(tv) вместо setContentView(tv) Любая помощь будет принята с благодарностью.

public class MyOnItemSelectedListener implements OnItemSelectedListener {

   public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) 
   {                   
       if (parent.getItemAtPosition(pos).toString().equals("Mars"))
       {      TextView tv = new TextView(HelloSpinner.this); 
              tv.setText(parent.getItemAtPosition(pos).toString() + "Mars Selected");
              setContentView(tv); //How can I use addView(tv); here?
              //Toast.makeText(parent.getContext(), "Mars Selected", Toast.LENGTH_LONG).show();

       }if (parent.getItemAtPosition(pos).toString().equals("Earth"))
       {      TextView tv = new TextView(HelloSpinner.this); 
              tv.setText(parent.getItemAtPosition(pos).toString() + "Earth Selected");
              setContentView(tv); //How can I use addView(tv); here?
              //Toast.makeText(parent.getContext(), "Earth Selected", Toast.LENGTH_LONG).show();
       }
   }

   public void onNothingSelected(AdapterView parent) 
   {
         // Do nothing.
   } }

enter image description here

1 Ответ

1 голос
/ 28 ноября 2011

Просто добавьте еще одно текстовое представление под спиннер, как

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:padding="10dip"
    android:layout_width="fill_parent" android:layout_height="wrap_content">
    <TextView android:layout_width="fill_parent" 
        android:layout_height="wrap_content" android:layout_marginTop="10dip" 
        android:text="@string/planet_prompt"/>
    <Spinner android:id="@+id/spinner" android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:prompt="@string/planet_prompt"/>
    <TextView android:layout_width="fill_parent" 
        android:layout_height="wrap_content" android:layout_marginTop="10dip" 
        android:id="@+id/label"/>
</LinearLayout>

Затем в вашем коде сделайте что-то вроде

TextView label = (TextView)findViewById(R.id.label);
label.setText(THE STRING FROM THE SPINNER);

В идеале вы должны вызывать setContentView только один раз во время onCreate.Для обновления экрана вы должны добавить и удалить представление, а не вызывать setContentView несколько раз.

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