gpt4 book ai didi

android - 如何动态填充 fragment 布局?

转载 作者:行者123 更新时间:2023-11-29 20:24:50 25 4
gpt4 key购买 nike

我有一个他类(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(item_name,item_value)。这个值是可以修改的,所以必须是一个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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com