Android 向已创建的relativelayout动态添加元素

Android 向已创建的relativelayout动态添加元素,android,android-layout,listview,android-relativelayout,Android,Android Layout,Listview,Android Relativelayout,在我的片段中,我希望listview中的每个自定义项如下所示: 名字 SetsXReps []->文本视图数组 []->复选框数组 文本视图和复选框的数量取决于适配器中的项目,因此我需要动态创建该部分。我很难将这些元素动态添加到我在xml中部分定义的relativelayout中。下面是自定义列表项的片段类,后跟xml。布局的id是“训练”中的“列表项目”和“练习” 公共类WorkoutFragment扩展了片段 { public static final String EXTRA_ALREAD

在我的片段中,我希望listview中的每个自定义项如下所示:

名字

SetsXReps

[]->文本视图数组

[]->复选框数组

文本视图和复选框的数量取决于适配器中的项目,因此我需要动态创建该部分。我很难将这些元素动态添加到我在xml中部分定义的relativelayout中。下面是自定义列表项的片段类,后跟xml。布局的id是“训练”中的“列表项目”和“练习”

公共类WorkoutFragment扩展了片段 { public static final String EXTRA_ALREADYCREATED_ID=“shake2lift.nickdelnano.com”

专用ExAdapter适配器;
私有列表视图列表视图;
私有数组列表集;
私人健身w;
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
UUID workUtid=(UUID)getArguments().getSerializable(额外的\u ALREADYCREATED \u ID);
w=WorkoutMASTER.get(getActivity()).getWorkout(workoutId);
}
创建视图上的公共视图(LayoutFlater充气器、视图组父级、捆绑保存状态)
{
视图v=充气机。充气(R.layout.fragment\u训练,父项,错误);
适配器=新的ExAdapter(getActivity(),R.layout.fragment\u create\u workout,R.id.list,set);
setAdapter(适配器);
返回v;
}
公共静态WorkoutFragment新实例(UUID workoutId)
{
Bundle args=新Bundle();
args.putSerializable(额外的已创建的ID,workUtid);
WorkoutFragment=新的WorkoutFragment();
fragment.setArguments(args);
返回片段;
}
私有类ExAdapter扩展了ArrayAdapter
{
公共ExAdapter(上下文c、int资源、int textViewResourceId、ArrayList集合){
超级(c,0,集);
}
公共视图getView(最终整数位置、视图转换视图、视图组父视图)
{
//如果没有给我们一个视图,就给它充气
if(convertView==null)
{
convertView=getActivity().GetLayoutFlater().充气(R.layout.list\u item\u exercise\u in\u workup,null);
}
设置s=getItem(位置);
//RelativeLayout.LayoutParams lp=新的RelativeLayout.LayoutParams(
//RelativeLayout.LayoutParams.WRAP_内容,RelativeLayout.LayoutParams.WRAP_内容);
TextView name=(TextView)convertView.findViewById(R.id.exName);
name.setText(s.getName());
TextView setsReps=(TextView)convertView.findViewById(R.id.setsXreps);
setsReps.setText(s.getSets()+“X”+s.getReps());
复选框[]复选框=新复选框[s.getSetsInt()];
EditText[]Weightboxs=新的EditText[s.getSetsInt()];
//将权重框的文本初始化为输入的权重
对于(int i=0;i
和我的XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/relativeLayoutEx"
   >
         <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="Name"
        android:id="@+id/exName"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />
    <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:text="SetsXReps"
    android:id="@+id/setsXreps"
    android:layout_below="@id/exName"
    android:layout_alignParentLeft="true"
   />
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="New Button"
    android:id="@+id/button2"
    android:layout_below="@+id/setsXreps"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_marginTop="112dp" />


非常感谢您的帮助和建议。

您需要先找到一个指向您的亲戚的指针,就像这样

RelativeLayout container = (RelativeLayout) view.findViewById(R.id.relativeLayoutEx);
然后在for循环中,动态创建文本框(和复选框),并将它们添加到布局中:

TextView text = new TextView(getActivity());
text.setText("Hello");
container.addView(text);
TextView text = new TextView(getActivity());
text.setText("Hello");
container.addView(text);