У меня есть фрагмент с его классом:Как динамически заполнять фрагмент?
public class FormatShortFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.bag_format_short, container, false);
return rootView;
}
}
И это его расположение:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</LinearLayout>
</RelativeLayout>
Этот фрагмент показан на FragmentPageAdapter. Макет будет расти, когда пользователь добавит элемент с сервера (исходное значение элемента не имеет значения), и этот элемент будет горизонтальным linearlayout, с textview и edittext (item_name, item_value). Это значение может быть модифицируемым, поэтому должно быть edittext, также, этот edittext будет периодически получать значения с сервера, поэтому его можно обновить автоматически.
После объяснения этого, как я могу динамически добавлять этот linearLayouts и его подпрограммы в графический интерфейс? и когда следует обновлять интерфейс?
Большое спасибо, любая помощь получена хорошо, я действительно потерялся на этом по этим темам.
EDITED с модификациями:
Я изменил код таким образом:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.bag_format_short, container, false);
return rootView;
}
@Override
public void onResume() {
super.onResume();
LinearLayout parentLinear = (LinearLayout) getActivity().findViewById(R.id.short_container);
for (int i = 1; i<10; i++){
LinearLayout innerLinear = (LinearLayout) new LinearLayout(getActivity());
TextView itemName = new TextView(getActivity());
itemName.setText("Nombre");
EditText itemValue = new EditText(getActivity());
itemValue.setText("Valor");
innerLinear.addView(itemName);
innerLinear.addView(itemValue);
parentLinear.addView(innerLinear);
}
}
@Override
public void onStart() {
super.onStart();
}
@Override
public void onStop() {
super.onStop();
}
и макет фрагмента был изменен следующим образом:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">
<LinearLayout
android:id="@+id/short_container"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</LinearLayout>
</RelativeLayout>
Теперь раскладка растущих в каждом для итерации.
В этом пункте у меня есть другие проблемы, я надеюсь, вы можете мне помочь в этом. - Как я могу создать объект LayouParams с атрибутами, такими как гравитация или вес? - Как передать данные из MainActivity в Fragment? - И как я могу заставить объект Fragment работать с новыми данными?
Также мне нужно знать, как привязать событие clickListener к программно linearLayouts добавлено, мне нужно изменить некоторые значения на сервере в зависимости от имени и отредактированного значения.
Большое спасибо за это, вы спасаете мою жизнь.
Отредактировано вопрос с изменением, принимая свой ответ, как пример. Благодарю. Можете ли вы помочь мне с другими вопросами? – osanfer