Android 从ArrayAdapter获取位置(项目)<;字符串>;给出NullPointerException

Android 从ArrayAdapter获取位置(项目)<;字符串>;给出NullPointerException,android,android-fragments,Android,Android Fragments,我试图寻找我的问题,但没有成功。 我正在从数据库(Parse.com)填充ArrayAdapter parkingLotAdapter。我将此适配器分配给微调器。微调器工作正常,显示项目列表。但是,当我试图通过getPosition(item)获取适配器中某个项的位置时,我会得到NullPointerException List<String> list = new ArrayList<String>(); for (ParseObject temp : parking

我试图寻找我的问题,但没有成功。 我正在从数据库(Parse.com)填充
ArrayAdapter parkingLotAdapter
。我将此适配器分配给微调器。微调器工作正常,显示项目列表。但是,当我试图通过
getPosition(item)
获取适配器中某个项的位置时,我会得到NullPointerException

List<String> list = new ArrayList<String>();

for (ParseObject temp : parkingList) {
     list.add(temp.getString("parking_lot"));
     }
parkingLotAdapter = new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_spinner_item, list);
parkingLotAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
parkinglotSpinner.setAdapter(parkingLotAdapter);

int pos4 = parkingLotAdapter.getPosition("A123");
parkinglotSpinner.setSelection(pos4);
试试这个方法,希望这能帮你解决问题。
您已经有列表对象尝试从列表而不是适配器获取索引。
列表=新的ArrayList();
替换此代码:
int pos4=parkingLotAdapter.getPosition(“A123”);
parkinglotSpinner.setSelection(位置4);
为此:
parkinglotSpinner.setSelection(list.indexOf(“A123”))

试试这种方法:parkinglotSpinner.setSelection(list.indexOf(“A123”);我发现了我的问题。我从外部数据库获取数据。由于数据收集有延迟,我尝试将代码放在异步任务中:在doInBackground中获取数据,在onPostExecute中设置选择。这就是我的问题。所以我只是将我的geposition(item)或setSelection(list.indexOf(“A123”))移动到我接收数据的部分代码中。
06-17 09:40:13.927: W/dalvikvm(26031): threadid=1: thread exiting with uncaught exception (group=0x41307300)
06-17 09:40:13.927: E/AndroidRuntime(26031): FATAL EXCEPTION: main
06-17 09:40:13.927: E/AndroidRuntime(26031): java.lang.NullPointerException
06-17 09:40:13.927: E/AndroidRuntime(26031):    at me.aizon.app.fragments.RegisterFragment$LoadParkingSpinnerASYNC.onPostExecute(RegisterFragment.java:396)
06-17 09:40:13.927: E/AndroidRuntime(26031):    at me.aizon.app.fragments.RegisterFragment$LoadParkingSpinnerASYNC.onPostExecute(RegisterFragment.java:1)
06-17 09:40:13.927: E/AndroidRuntime(26031):    at android.os.AsyncTask.finish(AsyncTask.java:631)
06-17 09:40:13.927: E/AndroidRuntime(26031):    at android.os.AsyncTask.access$600(AsyncTask.java:177)
06-17 09:40:13.927: E/AndroidRuntime(26031):    at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
06-17 09:40:13.927: E/AndroidRuntime(26031):    at android.os.Handler.dispatchMessage(Handler.java:99)
06-17 09:40:13.927: E/AndroidRuntime(26031):    at android.os.Looper.loop(Looper.java:137)
06-17 09:40:13.927: E/AndroidRuntime(26031):    at android.app.ActivityThread.main(ActivityThread.java:4746)
06-17 09:40:13.927: E/AndroidRuntime(26031):    at java.lang.reflect.Method.invokeNative(Native Method)
06-17 09:40:13.927: E/AndroidRuntime(26031):    at java.lang.reflect.Method.invoke(Method.java:511)
06-17 09:40:13.927: E/AndroidRuntime(26031):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:917)
06-17 09:40:13.927: E/AndroidRuntime(26031):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:684)
06-17 09:40:13.927: E/AndroidRuntime(26031):    at dalvik.system.NativeStart.main(Native Method)
Try this way,hope this will help you to solve your problem.

You have already list object to try to get index from list instead of adapter.

List<String> list = new ArrayList<String>();

Replace this code:
int pos4 = parkingLotAdapter.getPosition("A123");
parkinglotSpinner.setSelection(pos4);

With this:
parkinglotSpinner.setSelection(list.indexOf("A123"))