2012-01-29 5 views
0
String[] songList = { 
     "1", 
     "2", 
     "3", 

}; 
Spinner sp; 


     TextView selection; 


     @Override 
     public void onCreate(Bundle icicle) { 
      super.onCreate(icicle); 
      setContentView(R.layout.main); 
      selection = (TextView) findViewById(R.id.selection); 

      Spinner spin = (Spinner) findViewById(R.id.spinner); 
      spin.setOnItemSelectedListener(this); 

      ArrayAdapter<Object> aa = new ArrayAdapter<Object>(
        this, 
        android.R.layout.simple_spinner_item, 
        songList); 

      aa.setDropDownViewResource(
       android.R.layout.simple_spinner_dropdown_item); 
      spin.setAdapter(aa); 
     } 

     public void onItemSelected(AdapterView<?> parent, View v, int position, 
       long id) { 
      selection.setText(songList[position]); 
      String song = songList[position]; 
      Intent intent = new Intent(this, Tabview.class); 
      Bundle b = new Bundle(); 
      b.putString("song", song); 
      intent.putExtras(b); 
      startActivityForResult(intent, 0); 
     } 

     public void onNothingSelected(AdapterView<?> parent) { 
      selection.setText(""); 
     } 
{ 

У меня есть этот код, написанный прямо сейчас. В значительной степени то, что я пытаюсь сделать, это использовать выбор spinner для открытия нового действия (которое я сделал). НО, я также пытаюсь использовать httpget для загрузки информации на основе ссылки.Использование spinner для создания новой активности и отображения загруженных данных html

Так, например: Если я нажму «1», он откроет новое действие, затем он вызовет метод httpget, затем он будет загружать данные на основе того, что вы нажали. и эти данные будут изменены для каждой выбранной вами опции (EX. «1» = google.com, «2» = facebook.com и т. д.), а затем эти данные будут отображаться в действии.

Я также хочу использовать только одно действие для отображения данных для каждого выбора.

Также в моем "Tabview.class" У меня есть:

Bundle b = new Bundle(); 
    String song = b.getString("song"); 

Спасибо за любую помощь!

ответ

0

Что именно вы получаете? Код, похоже, работает. Если вы хотите выбрать что-то в соответствии с выбором, вы можете использовать простое условие if в связанной строке. Или, если проблема здесь о http get, взгляните на документацию here. Вы можете использовать AyncTask для запроса HTTP без блокировки.

Для справки, я прикрепил свой код, который только улучшил версию вашего кода.

public class ActivityxActivity extends Activity { 
    String[] songList = {"ONE","TWO","THREE"}; 
    Intent intent1; 
    Bundle strs; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     final Spinner sp = (Spinner) findViewById(R.id.spinner1); 
     ArrayAdapter<Object> aa = new ArrayAdapter<Object>(this, android.R.layout.simple_spinner_item, songList); 
     aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     sp.setAdapter(aa); 
     sp.setOnItemSelectedListener(new MyOnItemSelectedListener()); 
     intent1 = new Intent(getApplicationContext(),AnotherActivity.class); 
    } 
    public class MyOnItemSelectedListener implements OnItemSelectedListener { 
     public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { 
      strs = new Bundle(); 
      strs.putInt("item", pos); 
      strs.putString("song", parent.getItemAtPosition(pos).toString()); 
      intent1.putExtras(strs); 
      startActivity(intent1); 
     } 
     @Override 
     public void onNothingSelected(AdapterView<?> arg0) {} 
    } 
} 

И в другой деятельности,

public class AnotherActivity extends Activity { 
    Bundle data; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     data = getIntent().getExtras(); 
     Integer item = data.getInt("item"); 
     //Use a switch(item) here to switch to different links based on selection 
     TextView tv = (TextView) findViewById(R.id.tv1); 
     tv.setText("Another Activity, Item is :" + item.toString()); 
    } 
} 

Убедитесь, что вы добавить вашу деятельность в файле манифеста Android.

Thanks

+0

Благодарим вас за это! Но если у меня есть около ста разных слов в моей строке [] {}; есть ли способ связать каждую из них с определенным веб-адресом без необходимости делать сотни разных операторов if? – Chandler

+0

ok, Если вышеприведенное решение работает, пожалуйста, примите ответ. Вы можете использовать пользовательский адаптер, который может адаптировать пользовательский ArrayList, который связывает каждый элемент с соответствующим веб-адресом. Но я предлагаю вам задать вопрос в другой теме. Благодарю. –