在Scroll上,Spinner的值在Android中重置。如何避免它

时间:2015-09-22 04:36:51

标签: android

我有一个包含动态数组数据的微调器。当我在微调器中选择值并向下滚动并再次向上滚动时,值会重置,这背后可能是什么原因,我该如何避免它。以下是我的代码:

                spinner.setVisibility(View.VISIBLE);
                spinner.setOnItemSelectedListener(UserSurveyAdapter.this);

                List<String> list = new ArrayList<String>();
                int arraysize = oi.getOptList().size();

                Log.d(LOG_TAG, "Size ==" +arraysize );
                for (int k = 0; k <arraysize; k++) {   
                    if(k == 0){
                        list.add("");
                    }else{
                        list.add(oi.getOptList().get(k));
                    }

                }

                ArrayAdapter<String> adapter = new ArrayAdapter<String>(mContext, android.R.layout.simple_spinner_item, list) {

                    @Override
                       public View getView(int position, View convertView, ViewGroup parent) {

                               View v = super.getView(position, convertView, parent);
                               if (position == getCount()) {
                                   ((TextView)v.findViewById(android.R.id.text1)).setText("");
                                   ((TextView)v.findViewById(android.R.id.text1)).setHint(getItem(getCount())); //"Hint to be displayed"
                               }

                               return v;
                           }       

                           @Override
                           public int getCount() {
                               return super.getCount()-1;            // you don't display last item. It is used as hint.
                           }

                   };


                   adapter.setDropDownViewResource(R.layout.custom_spinner_list);
                   spinner.setAdapter(adapter);
                   spinner.setSelection(adapter.getCount());        //set the hint the default selection so it appears on launch.
                   spinner.setOnItemSelectedListener(this);
                   notifyDataSetChanged();   

1 个答案:

答案 0 :(得分:0)

如果您想在微调器中查看选定/更改的数据,那么

首先,如果是微调器,请创建值的数组/ arraylist。 其次,在其中放置一个布尔值,如active(true或false)。 第三,当您从微调器中选择该值时,默认值为active。

注意:必须在适配器中传递此数组。因此,getView始终获取此数组的值。

供您参考,请查看此示例ListView