动态创建多个微调器+适配器+监听器的最佳方式

Best way to dynamically create multiple spinners + adapters + listeners

Edit: Not sure why this got downvoted, I'm asking about dynamically making NEW spinners not ones currently in the layout.

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

我在看:

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

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

    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 或其他 class 中,您可以执行类似的操作。

    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);
                  } 

           }
    }