动态创建多个微调器+适配器+监听器的最佳方式
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 个额外微调器的类别选择而有所不同,即:汽车制造型号年份、鞋子:尺寸、颜色等...)。我如何解释这一点,动态创建它们并获得用户选择?这甚至可能吗?
我在看:
- Android: Create spinner programmatically from array
- What is the best way to implement multiple spinners?
将每个微调器的值存储在 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);
}
}
}
Edit: Not sure why this got downvoted, I'm asking about dynamically making NEW spinners not ones currently in the layout.
我正在尝试找出处理生成多个微调器的最佳方法,动态地使用单独的适配器和侦听器。这是交易,我在服务器端提供所需微调器的数量(根据 1-10 个额外微调器的类别选择而有所不同,即:汽车制造型号年份、鞋子:尺寸、颜色等...)。我如何解释这一点,动态创建它们并获得用户选择?这甚至可能吗?
我在看:
- Android: Create spinner programmatically from array
- What is the best way to implement multiple spinners?
将每个微调器的值存储在 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);
}
}
}