Android Spinner dynamically changes elements

I want to use Spinner in my application. Spinner context (elements) depends on user settings made in the application settings.

I created Spinner without elements. After downloading the application, Spinner has one entry. To get entries, the user must go to the menu and upload the image. Based on this, the elements are loaded into a String Array. This array of strings will be passed to the adapter. See Code:

List<String> als = new ArrayList<String>(); als = Arrays.asList(Data.getfloornames()); adapter = new ArrayAdapter<String>(this, R.array.flooritem, als); adapter.notifyDataSetChanged(); floornum.setAdapter(adapter); 

After that. The user will be returned to the settings menu. Clicking on the menu Sets the back button on devices, cancels the application.

 Error from Logcat is FATAL Exception: main. 05-16 15:12:43.193: E/AndroidRuntime(9128): android.content.res.Resources$NotFoundException: Resource ID #0x7f060002 05-16 15:12:43.193: E/AndroidRuntime(9128): at android.content.res.Resources.getValue(Resources.java:1014) 05-16 15:12:43.193: E/AndroidRuntime(9128): at android.content.res.Resources.loadXmlResourceParser(Resources.java:2139) 05-16 15:12:43.193: E/AndroidRuntime(9128): at android.content.res.Resources.getLayout(Resources.java:853) 05-16 15:12:43.193: E/AndroidRuntime(9128): at android.view.LayoutInflater.inflate(LayoutInflater.java:394) 05-16 15:12:43.193: E/AndroidRuntime(9128): at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:371) 05-16 15:12:43.193: E/AndroidRuntime(9128): at android.widget.ArrayAdapter.getView(ArrayAdapter.java:362) 05-16 15:12:43.193: E/AndroidRuntime(9128): at android.widget.AbsSpinner.onMeasure(AbsSpinner.java:193) 05-16 15:12:43.193: E/AndroidRuntime(9128): at android.widget.Spinner.onMeasure(Spinner.java:439) 05-16 15:12:43.193: E/AndroidRuntime(9128): at android.view.View.measure(View.java:15518) 05-16 15:12:43.193: E/AndroidRuntime(9128): at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:681) 05-16 15:12:43.193: E/AndroidRuntime(9128): at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461) 05-16 15:12:43.193: E/AndroidRuntime(9128): at android.view.View.measure(View.java:15518) 05-16 15:12:43.193: E/AndroidRuntime(9128): at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:681) 05-16 15:12:43.193: E/AndroidRuntime(9128): at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461) 05-16 15:12:43.193: E/AndroidRuntime(9128): at android.view.View.measure(View.java:15518) 05-16 15:12:43.193: E/AndroidRuntime(9128): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4825) 05-16 15:12:43.193: E/AndroidRuntime(9128): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404) 05-16 15:12:43.193: E/AndroidRuntime(9128): at android.widget.LinearLayout.measureVertical(LinearLayout.java:695) 05-16 15:12:43.193: E/AndroidRuntime(9128): at android.widget.LinearLayout.onMeasure(LinearLayout.java:588) 05-16 15:12:43.193: E/AndroidRuntime(9128): at android.view.View.measure(View.java:15518) 05-16 15:12:43.193: E/AndroidRuntime(9128): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4825) 05-16 15:12:43.193: E/AndroidRuntime(9128): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 05-16 15:12:43.193: E/AndroidRuntime(9128): at android.view.View.measure(View.java:15518) 05-16 15:12:43.193: E/AndroidRuntime(9128): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4825) 05-16 15:12:43.193: E/AndroidRuntime(9128): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404) 05-16 15:12:43.193: E/AndroidRuntime(9128): at android.widget.LinearLayout.measureVertical(LinearLayout.java:695) 05-16 15:12:43.193: E/AndroidRuntime(9128): at android.widget.LinearLayout.onMeasure(LinearLayout.java:588) 05-16 15:12:43.193: E/AndroidRuntime(9128): at android.view.View.measure(View.java:15518) 05-16 15:12:43.193: E/AndroidRuntime(9128): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4825) 05-16 15:12:43.193: E/AndroidRuntime(9128): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 05-16 15:12:43.193: E/AndroidRuntime(9128): at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2176) 05-16 15:12:43.193: E/AndroidRuntime(9128): at android.view.View.measure(View.java:15518) 05-16 15:12:43.193: E/AndroidRuntime(9128): at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1874) 05-16 15:12:43.193: E/AndroidRuntime(9128): at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1089) 05-16 15:12:43.193: E/AndroidRuntime(9128): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1265) 05-16 15:12:43.193: E/AndroidRuntime(9128): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:989) 05-16 15:12:43.193: E/AndroidRuntime(9128): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4351) 05-16 15:12:43.193: E/AndroidRuntime(9128): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749) 05-16 15:12:43.193: E/AndroidRuntime(9128): at android.view.Choreographer.doCallbacks(Choreographer.java:562) 05-16 15:12:43.193: E/AndroidRuntime(9128): at android.view.Choreographer.doFrame(Choreographer.java:532) 05-16 15:12:43.193: E/AndroidRuntime(9128): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735) 05-16 15:12:43.193: E/AndroidRuntime(9128): at android.os.Handler.handleCallback(Handler.java:725) 05-16 15:12:43.193: E/AndroidRuntime(9128): at android.os.Handler.dispatchMessage(Handler.java:92) 05-16 15:12:43.193: E/AndroidRuntime(9128): at android.os.Looper.loop(Looper.java:137) 05-16 15:12:43.193: E/AndroidRuntime(9128): at android.app.ActivityThread.main(ActivityThread.java:5041) 05-16 15:12:43.193: E/AndroidRuntime(9128): at java.lang.reflect.Method.invokeNative(Native Method) 05-16 15:12:43.193: E/AndroidRuntime(9128): at java.lang.reflect.Method.invoke(Method.java:511) 05-16 15:12:43.193: E/AndroidRuntime(9128): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 05-16 15:12:43.193: E/AndroidRuntime(9128): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 05-16 15:12:43.193: E/AndroidRuntime(9128): at dalvik.system.NativeStart.main(Native Method) 

What am I doing wrong? Is it impossible to set Spinner elements in the application menu settings?

+6
source share
3 answers

You can try the following code to dynamically add an element to a spinner.

 Spinner spinner = (Spinner)findViewById(R.id.mySpinner); ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, android.R.id.text1); spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(spinnerAdapter); spinnerAdapter.add("value"); spinnerAdapter.notifyDataSetChanged(); 
+8
source

Try changing this:

 adapter.notifyDataSetChanged(); floornum.setAdapter(adapter); 

in it:

 floornum.setAdapter(adapter); adapter.notifyDataSetChanged(); 
0
source

See ArrayAdapter javadoc.

textViewResourceId Resource ID for the layout file that contains the TextView to use when instantiating.

0
source

Source: https://habr.com/ru/post/945169/


All Articles