2016-03-18 11 views
1

Я разрабатываю приложение для Android, которое у меня есть класс A. Класс A имеет прядильщик, и есть класс B, который имеет номер onItemSelected(), B implements OnItemSelectedListener и B является общедоступным. Я хочу вызвать функцию в A, когда выбран новый элемент. Поэтому, если там был выбран пункт first, и я меняю его на second, тогда я хочу вызвать функцию из класса A.
Я всегда хочу назвать ту же функцию A. Он обновляет список.
Как я могу это сделать?
Там в 'вертушка с называющий в A' класс A s onCreate:Как вызвать функцию при каждом выборе в spinner

public void addListenerOnSpinnerItemSelection() { 
    pspinner = (Spinner) findViewById(R.id.spinner1); 
    pspinner.setOnItemSelectedListener(new B()); 
} 

А класс B:

public class B implements OnItemSelectedListener { 
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id){ 
     Toast.makeText(parent.getContext(), 
      "The selected place: " + parent.getItemAtPosition(pos).toString(), 
      Toast.LENGTH_SHORT).show(); 
      A.refresh(); //I think I should call A's function like that but 
         // Android Studio tells meg that refresh() must be static 
    } 
} 

Должен ли я называть функция A «s в addListenerOnSpinnerItemSelection()? Или в B 's onItemSelected? Но как?
К сожалению, это не так. Как я могу вызвать функцию A без статического refresh()? Spinner получает свои элементы из xml.

ответ

-1

Вы можете использовать оператор if/else или переключатель в свой onItemSelectedListener. В вашем onItemSelectedListener, попробуйте следующее:

String s = parent.getSelectedItem().toString(); 

if(s == "1"){ 
    callFunctionHere(); 
} 
else if(s == "2"){ 
    anotherFunction(); 
} 

Вдохновленный this SO вопрос

+0

О, извините, @Steve, может быть, я забыл упомянуть, что я всегда хочу называть одну и ту же функцию при каждом выбранном изменении. Но как назвать функцию A в B? : O 'a.function()'? –

+0

Да, вы бы просто вызвали a.function(); в каждой позиции –

+0

Неверный способ [сравнить строки в Java] (http://stackoverflow.com/questions/513832/how-do-compare-strings-in-java) – codeMagic

1

в случае небольшого числа индексов вы можете использовать этот

public void onClick(View v) { 
     startActivity(new Intent(UserLogin.this, ResetEmail.class)); 
    } 
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) 
    { 
     if (parent.getSelectedItemPosition() == 0) 
     { 
      someFunction(); 
     } 
     else if (parent.getSelectedItemPosition() == 1) 
     { 
      someFunction(); 
     } 
     else if (parent.getSelectedItemPosition() == 2) 
     { 
      someFunction(); 
     } 
    } 

удачи.

 Смежные вопросы

  • Нет связанных вопросов^_^