2014-11-15 5 views
0

В моем текущем проекте Spring один из моих действий должен быть формой, в которой пользователь может вставить новый объект. код для деятельности, как это:Динамически генерировать файл макета XML

public class FormNewItemActivity extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.form_new_item_view); 

    Intent intent = getIntent(); 
    Dao<?> dao = intent.getStringExtra(HelloActivity.EXTRA_MESSAGE); 
    } 
} 

файл макет должен иметь список полого EditText и уникальную кнопку в конце для запуска спасительных данных в базе данных SQLite.

Интересно, если возможно, указав список строк с именем полей класса сущности, динамически создайте файл макета xml с одним EditText для каждого поля.

Кто-нибудь знает, действительно ли это возможно и как это можно сделать?

ответ

2

Вы не можете динамически создавать и загружать файл макета XML. Однако то, что вы можете сделать, это динамически создавать макет программно, который будет иметь тот же эффект. Этот метод работает, создавая и добавляя представления во время выполнения к макету, который служит в качестве контейнера - например, пустой LinearLayout. В вашем примере вы бы R.layout.form_new_item_view содержать пустой LinearLayout

<LinearLayout 
    android:id="@+id/container_layout" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"/> 

Вы бы тогда найти макет контейнера в OnCreate

LinearLayout container = (LinearLayout) findViewById(R.id.container_layout); 

А затем создать и добавить TextView или EditText, как вам нужно от список имен полей

for(String title: listOfTitles){ 
     TextView field = new TextView(this); 
     field.setText(title); 
     container.addView(field); 
    } 

Для настройки макета дополнительно можно установить LayoutParams для каждого представления, добавленного для управления полями и другими параметрами.

Смежные вопросы