Android:Spinner在适配器设置后抛出IndexOutOfBoundsException

时间:2014-02-10 13:37:33

标签: android android-arrayadapter android-spinner indexoutofboundsexception

似乎非常原始的问题,但是..

我有方法,我在其中创建并设置自定义适配器:

public void fillCountryAdapter()
    {
        Log.i(TAG + "fillCountryAdapter","");
        ArrayList<CountryInfo> countriesList  = new ArrayList<CountryInfo>();
                        countriesList.add(new CountryInfo("afghanistan", "AF ", "93", R.drawable.ad));
                        countriesList.add(new CountryInfo("albania", "AL ", "355",R.drawable.af));
                         countriesList.add(new CountryInfo("algeria", "DZ ", "213",R.drawable.dz));


        CountryAdapter countriesArrayAdapter = new CountryAdapter(getActivity(),
                 android.R.layout.simple_list_item_1,countriesList);
        countriesArrayAdapter.setDropDownViewResource(R.layout.country_item);

        registerCodePhone.setAdapter(countriesArrayAdapter);
}

一切都是碎片完成的。在onCreateView中,我称之为mehod。并在

registerCodePhone
                .setOnItemSelectedListener(new OnItemSelectedListener() {

                    public void onItemSelected(AdapterView<?> arg0, View arg1,
                            int arg2, long arg3) {
                        Log.i("choosed item", Integer.toString(registerCodePhone.getAdapter().getCount()));
                        Log.i("choosed item", ((CountryInfo)registerCodePhone.getAdapter().getItem(arg2)).toString() );

                    }

                    public void onNothingSelected(AdapterView<?> arg0) {
                        Log.i("un choosed item", registerCodePhone
                                .getSelectedItem().toString());

                    }

                });

registerCodePhone.getAdapter().getItem(arg2)registerCodePhone.getSelectedItem().toString()投掷:

02-10 15:29:24.498: E/AndroidRuntime(24725): Process: com.assignmentexpert, PID: 24725
02-10 15:29:24.498: E/AndroidRuntime(24725): java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
02-10 15:29:24.498: E/AndroidRuntime(24725):    at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
02-10 15:29:24.498: E/AndroidRuntime(24725):    at java.util.ArrayList.get(ArrayList.java:308)
02-10 15:29:24.498: E/AndroidRuntime(24725):    at android.widget.ArrayAdapter.getItem(ArrayAdapter.java:337)
02-10 15:29:24.498: E/AndroidRuntime(24725):    at com.fragments.RegisterFragment$10.onItemSelected(RegisterFragment.java:202)
02-10 15:29:24.498: E/AndroidRuntime(24725):    at android.widget.AdapterView.fireOnSelected(AdapterView.java:893)
02-10 15:29:24.498: E/AndroidRuntime(24725):    at android.widget.AdapterView.access$200(AdapterView.java:48)
02-10 15:29:24.498: E/AndroidRuntime(24725):    at android.widget.AdapterView$SelectionNotifier.run(AdapterView.java:861)
02-10 15:29:24.498: E/AndroidRuntime(24725):    at android.os.Handler.handleCallback(Handler.java:733)
02-10 15:29:24.498: E/AndroidRuntime(24725):    at android.os.Handler.dispatchMessage(Handler.java:95)
02-10 15:29:24.498: E/AndroidRuntime(24725):    at android.os.Looper.loop(Looper.java:136)
02-10 15:29:24.498: E/AndroidRuntime(24725):    at android.app.ActivityThread.main(ActivityThread.java:5017)
02-10 15:29:24.498: E/AndroidRuntime(24725):    at java.lang.reflect.Method.invokeNative(Native Method)
02-10 15:29:24.498: E/AndroidRuntime(24725):    at java.lang.reflect.Method.invoke(Method.java:515)
02-10 15:29:24.498: E/AndroidRuntime(24725):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
02-10 15:29:24.498: E/AndroidRuntime(24725):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
02-10 15:29:24.498: E/AndroidRuntime(24725):    at dalvik.system.NativeStart.main(Native Method)

toString()在我的CountryInfo类中被覆盖。有趣的是,getSelectedItem()之前此Spinner的适配器计数不为空。

这会导致什么?

0 个答案:

没有答案