2016-07-21 3 views
-1

У меня есть два счетчика, где второй счетчик подключен к первому. Второй прядильщик выпадает, но всегда застрял в первом выборе и постоянно показывает Тост.Студия Android Вторая прядильная машина, застрявшая при выборе первого выбора

Как исправить второй прядильщик onItemSelected и Toast?

Спасибо

content_main.xml 
    <?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent">  
    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="Select program:" /> 
    <Spinner 
     android:id="@+id/program_spinner" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:entries="@array/program_arrays" /> 
    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="Select course:" /> 
    <Spinner 
     android:id="@+id/course_spinner" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" /> 
</LinearLayout> 

-

MainActivity.java 
public class MainActivity extends AppCompatActivity implements 
    AdapterView.OnItemSelectedListener { 
Spinner program_spinner, course_spinner; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    program_spinner = (Spinner)findViewById(R.id.program_spinner); 
    course_spinner = (Spinner)findViewById(R.id.course_spinner); 

    program_spinner.setOnItemSelectedListener(this); 
    course_spinner.setOnItemSelectedListener(this); 
} 

@Override 
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, 
          long arg3) { 
    String program = String.valueOf(program_spinner.getSelectedItem()); 
    String course = String.valueOf(course_spinner.getSelectedItem()); 
    switch(program) { 
     case "Accounting": 
      ArrayAdapter<CharSequence> dataAdapter = ArrayAdapter.createFromResource(
        this, R.array.accounting_course_arrays, android.R.layout.simple_spinner_item); 
      dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
      dataAdapter.notifyDataSetChanged(); 
      course_spinner.setAdapter(dataAdapter); 
      break; 
     case "Nursing": 
      ArrayAdapter<CharSequence> dataAdapter2 = ArrayAdapter.createFromResource(
        this, R.array.nursing_course_arrays, android.R.layout.simple_spinner_item); 
      dataAdapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
      dataAdapter2.notifyDataSetChanged(); 
      course_spinner.setAdapter(dataAdapter2); 
      break; 
    } 
    Toast.makeText(getApplicationContext(), program, Toast.LENGTH_SHORT).show(); 
    Toast.makeText(getApplicationContext(), course, Toast.LENGTH_SHORT).show(); 
} 

@Override 
public void onNothingSelected(AdapterView<?> arg0) { 
} 

}

ответ

0

dataAdapter.notifyDataSetChanged(); Попробуйте удалить и dataAdapter2.notifyDataSetChanged(); и бежать. Это может помочь.

+0

К сожалению, до сих пор не работает. – whistle

0

Изменить свой код выше с ниже и попытаться узнать правильно основы первыми:

public class MainActivity extends AppCompatActivity implements 
AdapterView.OnItemSelectedListener { 
    Spinner program_spinner, course_spinner; 
    ArrayAdapter<CharSequence> dataAdapter=null; 
    ArrayAdapter<CharSequence> dataAdapter2=null; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 

program_spinner = (Spinner)findViewById(R.id.program_spinner); 
course_spinner = (Spinner)findViewById(R.id.course_spinner); 

dataAdapter = ArrayAdapter.createFromResource(
       this, R.array.accounting_course_arrays, android.R.layout.simple_spinner_item); 
     dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

dataAdapter2 = ArrayAdapter.createFromResource(
       this, R.array.nursing_course_arrays, android.R.layout.simple_spinner_item); 
     dataAdapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 



program_spinner.setOnItemSelectedListener(this); 
course_spinner.setOnItemSelectedListener(this); 
} 

@Override 
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, 
         long arg3) { 
switch(arg1.getId()) { 
    case R.id.program_spinner: 
     String program = String.valueOf(program_spinner.getSelectedItem()); 

    switch(program) { 
    case "Accounting": 
     course_spinner.setAdapter(dataAdapter); 
     break; 
    case "Nursing": 
     course_spinner.setAdapter(dataAdapter2); 
     break; 
     } 
     //do whatever when selecting item from your first spinner 
     break; 
    case R.id.course_spinner: 
     //do whatever when selecting item from your secondspinner 
     break; 
} 

} 

@Override 
public void onNothingSelected(AdapterView<?> arg0) { 
} 

} 
+0

«попытайтесь правильно изучить основы». Итак, какие основы есть в вашем ответе? – sJy

+0

@Drv К второму счетчику, подключенному к первому счетчику, я имел в виду, что course_spinner зависит от program_spinner. Поэтому, если пользователь выбирает «Сестринское дело» в program_spinner, курс_spinner будет показывать список курсов ухода. Ваше решение разделило прядильщики и установило список course_spinner, чтобы показать nursing_course_arrays независимо от того, что. – whistle

+0

@whistle Am Извините, я редактировал свой код, и я неправильно понял ваш вопрос. Извините моя ошибка. – Drv

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

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