【问题标题】:Best way to dynamically create multiple spinners + adapters + listeners动态创建多个微调器+适配器+侦听器的最佳方法
【发布时间】:2016-04-11 04:54:05
【问题描述】:

编辑:不知道为什么这被否决了,我在动态询问 使新的微调器不在布局中。

我试图找出处理生成多个微调器的最佳方法,动态地使用单独的适配器和侦听器。这是交易,我提供所需的微调器数量(取决于从 1-10 个额外微调器 IE 中选择的类别:汽车制造型号年份、鞋子:尺寸、颜色等...)服务器端。我如何解释这一点,动态创建它们并获得用户选择?这甚至可能吗?

我在看:

【问题讨论】:

    标签: java android spinner


    【解决方案1】:

    您需要创建一个类来创建这样的视图。但是您需要为您的活动设置某种布局,其中包含一个空的 LinearLayout 或您想要的任何内容。例如,如果您创建一个用于创建微调器的类,它应该如下所示。

        public class MyViewController {
             private Context context;
             public MyViewController(Context context) {
                  this.context = context;
             }
    
             public Spinner getSpinner() {
                 return new Spinner(context);
             }
    
             public ArrayAdapter getAdapter(int resId, String[] values) {
                return new ArrayAdpter(context, resId, values);
             }
        }
    

    现在在您的 Activity 或 Fragment 或其他类中,您可以执行类似的操作。

        public class MainActivity extends Activity {
               private LinearLayout mainLayout;
               private String[] values = {"Hello", "Java", "Android"};
               private String[] values2 = {"Hmmm", "OK", "Bye"};
               private MyViewController myViewController;
    
               @Override
               protected void onCreate(Bundle savedInstanceState) {
                      super.onCreate(savedInstanceState);
                      setContentView(R.layout.activity_main);
                      mainLayout = (LinearLayout) findViewById
                                (R.id.main_linear_layout);
                      myViewController = new MyViewController(this);
                      LinearLayout.LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
                      params.setMargins(0, 5, 0, 5);
                      for (int i = 0; i < 10; ++i) {
                            Spinner spin = myViewController.getSpinner();
                            ArrayAdapter adapter;
                            if (i % 2 == 0) {
                              adapter = myViewController.getAdapter(R.layout.my_custom_style, values);
                            } else {
                              adapter = myViewController.getAdapter(R.layout.my_custom_style, values2);
                            }
                            spin.setAdapter(adapter);
                            mainLayout.addView(spin, params);
                      } 
    
               }
        }
    

    【讨论】:

    • 如何获取选中项?
    【解决方案2】:

    将每个微调器的值存储在 SQLite 数据库中,这样您就可以在本地查询它。

    【讨论】:

    • 这不是我要找的,我问的是动态制作新的微调器,而不是当前在屏幕上的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-02
    • 1970-01-01
    相关资源
    最近更新 更多