проверка содержимого спиннеров во время выполнения (android), пробная и неудачная - PullRequest
0 голосов
/ 02 февраля 2012

Недавно я опубликовал вопрос о том, как изменить значения счетчика во время выполнения программы, и мне сказали изменить массив, используемый для создания адаптера, и вызвать notifyDataSetChanged ();

Я пробовал это, но мой счетчикне обновляется, хотя мой массив.Я прилагаю код ниже

 public void onCreate(Bundle savedInstanceState) 
    {
    res=getResources();
    Boolean a;
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

// First spinner whose value determines the value of the second spinner        
    spinner = (Spinner) findViewById(R.id.spinner1); 
// ArrayAdaptor of first spinner
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( this                            R.array.planets_array, android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapter);
    spinner2 = (Spinner) findViewById(R.id.spinner2);
    spinner2.setVisibility(4);// spinner 2 is not visible initially
// ArrayAdaptor of first spinner        
    adapter2 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, spinner_drop);
    adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    spinner2.setAdapter(adapter2);

    Context context = getApplicationContext();
    spinner.setOnItemSelectedListener(new MyOnItemSelectedListener());
    }
public class MyOnItemSelectedListener implements OnItemSelectedListener 
{

    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) 
    {
        if(pos!=0)
        {

     //copying string array of second spinner from strings.xml to the current string array
      spinner_drop=res.getStringArray(R.array.activities_array2);
      Toast.makeText(parent.getContext(), "The planet is " +spinner_drop[0] , Toast.LENGTH_SHORT).show(); //this toast shows up
      adapter2.notifyDataSetChanged();
      spinner2.refreshDrawableState();
      spinner2.setVisibility(0);//this command works and the spinner is visible, but it is empty
        }
    }

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


}

Любая идея, что я делаю неправильно, любая идея поможет.

PS: я пытался удалить всю невидимую, видимую вещь, не помогает

Заранее спасибо

1 Ответ

0 голосов
/ 02 февраля 2012

Измените ваш onItemSelected метод следующим образом, обратите внимание на новое добавление , которое я добавил ниже.

public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
  if (pos!=0) {

    //copying string array of second spinner from strings.xml to the current
    //string array
    spinner_drop=res.getStringArray(R.array.activities_array2);
    Toast.makeText(parent.getContext(), "The planet is " +spinner_drop[0],
                   Toast.LENGTH_SHORT).show(); //this toast shows up
    adapter2.notifyDataSetChanged();
    spinner2.setAdapter(adapter2); // <--- New Addition
    // spinner2.refreshDrawableState();
    spinner2.setVisibility(0); //this command works and the spinner is visible,
                               //but it is empty
  }
}
...