Android 如何让notifyDataSetChanged()开始工作?

Android 如何让notifyDataSetChanged()开始工作?,android,android-arrayadapter,android-spinner,onitemclicklistener,notifydatasetchanged,Android,Android Arrayadapter,Android Spinner,Onitemclicklistener,Notifydatasetchanged,我试图根据在另一个微调器中选择的项目更改微调器的值。用于填充这两个微调器的值位于名为array的xml文件中。数组文件看起来像 <string-array name="eventYear"> <item>2010</item> <item>2010</item> <item>2010</item> </string-array> <strin

我试图根据在另一个微调器中选择的项目更改微调器的值。用于填充这两个微调器的值位于名为array的xml文件中。数组文件看起来像

<string-array name="eventYear">
       <item>2010</item>
       <item>2010</item>
       <item>2010</item>
   </string-array>
   <string-array name="eventName">
        <item>something</item>
        <item>something</item>
        <item>something</item>
        <item>something</item>
        .
        .
        .
    </string-array>

2010
2010
2010
某物
某物
某物
某物
.
.
.
下面是onCreate方法和其他相关代码

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_report_selection);

        // Display UI Elements
        Log.v("RS", "Displaying Headers and Form");
        headerText = (TextView) findViewById(R.id.headerTextView);
        subheaderText = (TextView) findViewById(R.id.subHeaderTextView);
        headerForm = (LinearLayout) findViewById(R.id.headerForm);

        // For Event Year
        yearTextView = (TextView) findViewById(R.id.yearTextView);
        yearSpinner = (Spinner) findViewById(R.id.yearSpinner);
        adapter0 = ArrayAdapter.createFromResource(
                ReportSelectionActivity.this, R.array.eventYear,
                android.R.layout.simple_spinner_dropdown_item);
        adapter0.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        yearSpinner.setAdapter(adapter0);
        // When a year is selected change the options in the event name spinner
        yearSpinner.setOnItemSelectedListener(new myOnItemSelectedListner());

        // For Event Names
        nameTextView = (TextView) findViewById(R.id.nameTextView);
        nameSpinner = (Spinner) findViewById(R.id.nameSpinner);
        ArrayAdapter<CharSequence> adapter1 = ArrayAdapter.createFromResource(
                ReportSelectionActivity.this, R.array.plzSelect,
                android.R.layout.simple_spinner_dropdown_item);
        adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        nameSpinner.setAdapter(adapter1);

        // Add table rows to view
        yearTableRow = (TableRow) findViewById(R.id.yearTableRow);
        nameTableRow = (TableRow) findViewById(R.id.nameTableRow);
    }
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u report\u selection);
//显示UI元素
Log.v(“RS”,“显示标题和表单”);
headerText=(TextView)findViewById(R.id.headerTextView);
subheaderText=(TextView)findViewById(R.id.subHeaderTextView);
HeadPerform=(线性布局)findViewById(R.id.HeadPerform);
//活动年
yearTextView=(TextView)findViewById(R.id.yearTextView);
yearSpinner=(微调器)findViewById(R.id.yearSpinner);
adapter0=ArrayAdapter.createFromResource(
ReportSelectionActivity.this,R.array.eventYear,
android.R.layout.simple\u微调器\u下拉菜单\u项);
adapter0.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
yearSpinner.setAdapter(适配器0);
//选择年份后,更改事件名称微调器中的选项
yearSpinner.setOnItemSelectedListener(新的MyOnItemSelectedListener());
//对于事件名称
nameTextView=(TextView)findViewById(R.id.nameTextView);
nameSpinner=(微调器)findViewById(R.id.nameSpinner);
ArrayAdapter适配器1=ArrayAdapter.createFromResource(
ReportSelectionActivity.this、R.array.plzSelect、,
android.R.layout.simple\u微调器\u下拉菜单\u项);
adapter1.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
nameSpinner.setAdapter(适配器1);
//添加要查看的表行
yearTableRow=(TableRow)findViewById(R.id.yearTableRow);
nameTableRow=(TableRow)findViewById(R.id.nameTableRow);
}
适配器0是一个全局变量

私有类myOnItemSelectedListner实现OnItemSelectedListener{
@凌驾
已选择公共视图(适配器视图arg0、视图arg1、内部arg2、,
长arg3){
//TODO自动生成的方法存根
整数计数=0;
如果(计数>=1){
//TODO自动生成的方法存根
//从微调器中选择年份
int data=Integer.parseInt(yearSpinner.getItemAtPosition(arg2)
.toString());
Log.v(“RS”,“数据:+数据”);
//根据选择的年份,初始化
//新建适配器并将其设置为事件名称微调器
交换机(数据){
案例2010:
adapter0=ArrayAdapter.createFromResource(
ReportSelectionActivity.this,
R.array.eventName2010,
android.R.layout.simple\u微调器\u下拉菜单\u项);
案例2011:
adapter0=ArrayAdapter.createFromResource(
ReportSelectionActivity.this,
R.array.eventName2011,
android.R.layout.simple\u微调器\u下拉菜单\u项);
案例2012:
adapter0=ArrayAdapter.createFromResource(
ReportSelectionActivity.this,
R.array.eventName2012,
android.R.layout.simple\u微调器\u下拉菜单\u项);
违约:
adapter0=ArrayAdapter.createFromResource(
ReportSelectionActivity.this、R.array.plzSelect、,
android.R.layout.simple\u微调器\u下拉菜单\u项);
}
//将适配器添加到微调器
adapter0.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
nameSpinner.setAdapter(适配器0);
//更改用户界面视图
adapter0.notifyDataSetChanged();
}//if语句结束
计数++;
}
@凌驾
未选择公共无效(AdapterView arg0){
//TODO自动生成的方法存根
}
}//私有类myOnItemSelectedListener的结束
那么为什么notifyDataSetChanged()不起作用呢

更新代码

私有类myOnItemSelectedListner实现OnItemSelectedListener{
阵列适配器;
字符串[]数组;
@凌驾
已选择公共视图(适配器视图arg0、视图arg1、内部arg2、,
长arg3){
//Log.v(“RS”,“在未选择的情况下”);
//TODO自动生成的方法存根
//整数计数=0;
/*如果(计数>=1){*/
//TODO自动生成的方法存根
//从微调器中选择年份
int数据;
试一试{
data=Integer.parseInt(yearSpinner.getItemAtPosition(arg2)
.toString());
}捕获(数字格式){
数据=0;
}
Log.v(“RS”,“数据:+数据”);
//根据选择的年份,初始化
//新建适配器并将其设置为事件名称微调器
交换机(数据){
案例2010:
Log.v(“RS”,“案例2010”);
适配器1.clear();
array=getResources().getStringArray(R.array.eventName2010);
list=newarraylist(Arrays.asList(array));
适配器1.add((字符序列)
private class myOnItemSelectedListner implements OnItemSelectedListener {

        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            // TODO Auto-generated method stub
            int count = 0;

            if (count >= 1) {
                // TODO Auto-generated method stub
                // Get the year selected from the spinner
                int data = Integer.parseInt(yearSpinner.getItemAtPosition(arg2)
                        .toString());
                Log.v("RS", "Data: " + data);
                // Depending on which year has been selected intialize the
                // new adapter and set it for the event name spinner
                switch (data) {
                case 2010:
                    adapter0 = ArrayAdapter.createFromResource(
                            ReportSelectionActivity.this,
                            R.array.eventName2010,
                            android.R.layout.simple_spinner_dropdown_item);
                case 2011:
                    adapter0 = ArrayAdapter.createFromResource(
                            ReportSelectionActivity.this,
                            R.array.eventName2011,
                            android.R.layout.simple_spinner_dropdown_item);
                case 2012:
                    adapter0 = ArrayAdapter.createFromResource(
                            ReportSelectionActivity.this,
                            R.array.eventName2012,
                            android.R.layout.simple_spinner_dropdown_item);
                default:
                    adapter0 = ArrayAdapter.createFromResource(
                            ReportSelectionActivity.this, R.array.plzSelect,
                            android.R.layout.simple_spinner_dropdown_item);
                }
                // Add adapter to spinner
                adapter0.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                nameSpinner.setAdapter(adapter0);
                // Change UI view
                adapter0.notifyDataSetChanged();
            }// End of if statment
            count++;

        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub

        }
    }// End of private class myOnItemSelectedListener
private class myOnItemSelectedListner implements OnItemSelectedListener {
        ArrayAdapter<CharSequence> adapter;
        String[] array;

        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            // Log.v("RS", "In on onItemSelected");
            // TODO Auto-generated method stub
            // int count = 0;

            /* if (count >= 1) { */
            // TODO Auto-generated method stub
            // Get the year selected from the spinner
            int data;
            try{
             data = Integer.parseInt(yearSpinner.getItemAtPosition(arg2)
                    .toString());
            }catch(NumberFormatException e){
                data = 0;
            }
            Log.v("RS", "Data: " + data);
            // Depending on which year has been selected intialize the
            // new adapter and set it for the event name spinner
            switch (data) {
            case 2010:
                Log.v("RS", "Case 2010");
                adapter1.clear();
                array = getResources().getStringArray(R.array.eventName2010);
                list = new ArrayList<String>(Arrays.asList(array));
                adapter1.add((CharSequence) list);
                /*
                 * = ArrayAdapter.createFromResource(
                 * ReportSelectionActivity.this, R.array.eventName2010,
                 * android.R.layout.simple_spinner_dropdown_item)
                 */
                ;
            case 2011:
                Log.v("RS", "Case 2011");
                adapter1.clear();
                array = getResources().getStringArray(R.array.eventName2011);
                list = new ArrayList<String>(Arrays.asList(array));
                adapter1.add((CharSequence) list);
                /*
                 * adapter0 = ArrayAdapter.createFromResource(
                 * ReportSelectionActivity.this, R.array.eventName2011,
                 * android.R.layout.simple_spinner_dropdown_item);
                 */
            case 2012:
                Log.v("RS", "Case 2012");
                adapter1.clear();
                array = getResources().getStringArray(R.array.eventName2012);
                list = new ArrayList<String>(Arrays.asList(array));
                adapter1.add((CharSequence) list);
                /*
                 * adapter0 = ArrayAdapter.createFromResource(
                 * ReportSelectionActivity.this, R.array.eventName2012,
                 * android.R.layout.simple_spinner_dropdown_item);
                 */
            default:
                Log.v("RS", "Case default");
                adapter1.clear();
                array = getResources().getStringArray(R.array.plzSelect);
                list = new ArrayList<String>(Arrays.asList(array));
                adapter1.add((CharSequence) list);
                /*
                 * adapter0 = ArrayAdapter.createFromResource(
                 * ReportSelectionActivity.this, R.array.plzSelect,
                 * android.R.layout.simple_spinner_dropdown_item);
                 */
            }
            // Add adapter to spinner

            adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            nameSpinner.setAdapter(adapter1);

            // Change UI view
            // Log.v("RS", "notifying view of change");
            adapter1.notifyDataSetChanged();
            /*
             * }// End of if statment
             */
        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub

        }
    }// End of private class myOnItemSelectedListener
int count = 0;
if (count >= 1) {
int count = 0;

if (count >= 1) {