从先前的微调器选择的项目动态更改微调器中的字符串名称

Change the string names in spinner dynamically from previous spinner chosen item

我想动态更改微调器中的字符串名称 android 来自之前微调器选择的项目。

这是我的 Activity class:

public class SelectionActivity extends AppCompatActivity implements View.OnClickListener {

    final String LOG = "Selection";
    private Spinner spBranch;
    private Spinner spSection;
    private Spinner spSemester,spSubject;
    private Button btnSend;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.selection);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);


        spBranch = (Spinner) findViewById(R.id.spBranch1);
        spSection = (Spinner) findViewById(R.id.spSection1);
        spSemester = (Spinner) findViewById(R.id.spSemester1);
        spSubject=(Spinner) findViewById(R.id.spSubject1);
        String[] items1 = new String[]{"CSE", "EEE", "EE", "ECE", "MECH", "CIVIL"};
        ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, items1);
        spBranch.setAdapter(adapter1);
        String[] items2 = new String[]{"A", "B", "C", "D", "E", "F"};
        ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, items2);
        spSection.setAdapter(adapter2);
        String[] items3 = new String[]{"1st", "2nd", "3rd", "4th", "5th", "6th", "7th", "8th"};
        ArrayAdapter<String> adapter3 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, items3);
        spSemester.setAdapter(adapter3);

        String[] items4 = new String[]{"Math 1", "Programming in C", "Thermodynamics", "Communication English", "Physics", "Basic Electronics"};
        String[] items5 = new String[]{"Chemistry", "Data Structure", "Mechanics", "Buiseness English", "Basic Electrical Engineering l ", "Math 2"};
        if(spSemester.getSelectedItem().toString().equals("1st"))
        {

            ArrayAdapter<String> adapter4 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item,items4);
            spSubject.setAdapter(adapter4);

        }
        else{

            ArrayAdapter<String> adapter4 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item,items5);
            spSubject.setAdapter(adapter4);

        }
        btnSend = (Button) findViewById(R.id.btnSend);

    } 



    @Override
    public void onClick(View v) {
        Intent in = new Intent(SelectionActivity.this, ListActivity.class);
        startActivity(in);
        HashMap postData = new HashMap();
        postData.put("txtBranch", spBranch.getSelectedItem().toString());
        postData.put("txtSection", spSection.getSelectedItem().toString());
        postData.put("txtSemester", spSemester.getSelectedItem().toString());

    }
}

我在这行 r 处遇到错误 spSubject.setAdapter(adapter4); 刚接触andorid,有没有其他方法可以做到这一点

尝试使用此代码了解是否选择了 spSemester 微调器中的第一个索引

if(spSemester.getSelectedItemPosition() == 1)
{

    ArrayAdapter<String> adapter4 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item,items4);
    spSubject.setAdapter(adapter4);

 }
 else{

    ArrayAdapter<String> adapter4 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item,items5);
                spSubject.setAdapter(adapter4);

}

请注意,您发布的所有代码将在 Activity 创建时立即 运行。这就是 onCreate() 方法的重点。当用户在任何 Spinner 中选择一个新项目时,什么都不会发生。如果您希望 Spinner 更动态地更改,您需要添加适当的事件侦听器。特别是,您需要实施 AdapterView.OnItemSelectedListener. An example is shown here。我建议创建单独的 classes 来实现监听器接口,而不是在你的 activity class.

上实现它