You will need to create a class for creating views like this. But you need to have some sort of a layout for your activity containing an empty LinearLayout or whatever you desire. For example if you create a class for creating a spinner, it should look like this.
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);
}
}
Now in your Activity or Fragment or other class you can do something like this.
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);
}
}
}