負載微調這是從我的SQL數據庫加載員工姓名爲對象,並將其顯示在屏幕上我Spinner
代碼:與對象和字符串
private void loadNames() {
//database handler
LysandrosDatabaseAdapter db = new LysandrosDatabaseAdapter(getApplicationContext());
List<DataBean> list = db.getAllDat();
//list for storing the names
String[] nameList = new String[list.size()];
//list for storing the ID and keeping it hidden
employeeList = new int[list.size()];
//loop to fill the list
nameList[0] = "All Employees";
employeeList[0] = 0;
for (int i=0; i<list.size(); i++) {
nameList[i+1] = list.get(i).getName() + " " + list.get(i).getSurname();
employeeList[i+1] = list.get(i).getID();
}
//creating adapter for spinner
ArrayAdapter<String > dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, nameList);
//drop down layout style - list view with radio button
dataAdapter.setDropDownViewResource(android.R.layout.select_dialog_multichoice);
//attaching data adapter to spinner
selectName.setAdapter(dataAdapter);
}
我想包括文本閱讀「的所有員工「作爲第一個選項,因爲我想實現一條If
聲明,當用戶選擇」所有員工「選項時,應用程序將獲取一些特定數據,當用戶選擇特定員工時,例如「約翰史密斯」該應用程序將只提取該記錄的數據。
上面的代碼片段是我到目前爲止所得到的,並且我得到一個ArrayIndexOutOfBoundsException
錯誤。
我的logcat表明這一點:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.lysandroslysandrou.marstest4/com.example.lysandroslysandrou.marstest4.Reports}: java.lang.ArrayIndexOutOfBoundsException: length=5; index=5
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Caused by: java.lang.ArrayIndexOutOfBoundsException: length=5; index=5
at com.example.lysandroslysandrou.marstest4.Reports.loadNames(Reports.java:147)
at com.example.lysandroslysandrou.marstest4.Reports.onCreate(Reports.java:78)
147線是nameList[i+1] = list.get(i).getName() + " " + list.get(i).getSurname();
我試過很多其他方法,但是沒有一次成功。從我的數據庫加載保存爲「所有員工」的值也不是一個可行的解決方案。
我在尋找兩件事情:
A)爲什麼我在我的情況下,特別是得到這個錯誤? (我讀過有關此異常here和here但不明白爲什麼它的發生在這裏)
和B)是否有我的問題的解決方案?
注意:如果行nameList[0] = "All Employees
和employeeList[0] = "0"
被刪除,代碼段工作正常。
編輯:我的新的堆棧跟蹤:
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference
at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:394)
at android.widget.ArrayAdapter.getDropDownView(ArrayAdapter.java:415)
at android.support.v7.widget.AppCompatSpinner$DropDownAdapter.getDropDownView(AppCompatSpinner.java:624)
at android.support.v7.widget.AppCompatSpinner$DropDownAdapter.getView(AppCompatSpinner.java:620)
at android.support.v7.widget.AppCompatSpinner.compatMeasureContentWidth(AppCompatSpinner.java:547)
at android.support.v7.widget.AppCompatSpinner.access$500(AppCompatSpinner.java:65)
at android.support.v7.widget.AppCompatSpinner$DropdownPopup.computeContentWidth(AppCompatSpinner.java:738)
at android.support.v7.widget.AppCompatSpinner$DropdownPopup.show(AppCompatSpinner.java:763)
at android.support.v7.widget.AppCompatSpinner.performClick(AppCompatSpinner.java:424)
at android.view.View$PerformClick.run(View.java:19749)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
編輯2:這是我onItemSelected
方法:
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
//On selecting a spinner item
String list = parent.getItemAtPosition(position).toString();
//employeeId = employeeList[position];
//showing selected spinner item
Toast.makeText(parent.getContext(), "You selected: " + list, Toast.LENGTH_SHORT).show();
}
非常感謝,但現在我得到了一個'java.lang。NullPointerException:嘗試在空對象引用時調用虛擬方法'java.lang.String java.lang.Object.toString()',當我點擊我的微調器時! –
那段代碼適合我,所以NullPointerException是由另一部分引起的。你可以發佈更多的代碼和一個新的堆棧跟蹤? –
是的,當然,我添加了新的堆棧跟蹤,但你想要更多的代碼? –