我有一个关于他的类(class)的 fragment :
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>
该 fragment 由 FragmentPageAdapter 显示。 当用户从服务器添加项目(项目的来源无关紧要)时,布局将会增长,并且该项目将是水平线性布局,具有 TextView 和编辑文本(项目名称,项目值)。这个值是可以修改的,所以必须是一个edittext,而且这个edittext会定期从服务器接收值,所以可以自动更新。
解释完之后,如何动态地将这个 LinearLayouts 及其 subview 添加到 GUI 中?我什么时候应该更新界面?
非常感谢,任何帮助都很好,我对这个主题真的很迷茫。
编辑修改:
我这样修改了代码:
@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();
}
并且 fragment 布局已经这样修改:
<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 View 重新加载新数据?
我还需要知道如何将 clickListener 事件绑定(bind)到以编程方式添加的 LinearLayouts,我需要根据名称和编辑的值修改服务器上的一些值。
非常感谢你,你救了我的命。
最佳答案
you Can easily Update UI of Fragment on Button click or any event just Like in Activity. You can get any view by
getActivity().findViewById()
参见示例,它将帮助您理解:-
public class FragmentTab3 extends SherlockFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragmenttab3, container, false);
return rootView;
}
@Override
public void onResume() {
super.onResume();
}
@Override
public void onStart() {
super.onStart();
LinearLayout linear = (LinearLayout) getActivity().findViewById(R.id.linear);
Button button = new Button(getActivity());
button.setText("Click Me");
linear.addView(button);
}
@Override
public void onStop() {
super.onStop();
}
}
关于android - 如何动态填充 fragment 布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32704729/