繁体   English   中英

将 notifyDataSetChanged 与 BaseAdapter 一起使用

[英]Using notifyDataSetChanged with BaseAdapter

当第一个微调器更改时,我试图更改第二个微调器。 这是我试过的。

spinnerBid = findViewById(R.id.profile_spinner_bid);
    spinnerBid.setAdapter(null);
    unitBAdapter = new UnitBAdapter(ProfileActivity.this, getUnitBs(aId));
    spinnerBid.setAdapter(unitBAdapter);
    int positionB = -1;
    for (int i = 0; i < getUnitBs(aId).size(); i++) {
        if (getUnitBs(aId).get(i).getBId() == bId) {
            positionB = i;
        }
    }
    spinnerBid.setSelection(positionB);
    unitBAdapter.notifyDataSetChanged(); 

您可以根据您的要求在 onCreate() 中执行以下代码,

        spinner1 = findViewById(R.id.spinner1);
        spinner2 = findViewById(R.id.spinner2);

        String[] s1 = {"abc", "def", "ghi", "jkl"};
        String[] s2 = {"mno", "pqr", "stu", "vwx"};

        ArrayAdapter<String> adapter1 =new  ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, s1);
        ArrayAdapter<String> adapter2 =new  ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, s2);

        spinner1.setAdapter(adapter1);
        spinner2.setAdapter(adapter2);

        spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                //here you can write your code for your requirements like,
                // if in spinner1 position 1 is selected then in spinner2 set position to 1 or anything you want
                if(position==0){
                    spinner2.setSelection(0);
                }
            }

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

            }
        });

我希望这对你有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM