如何为每行创建具有相同数据的多行应用。这就是所有行的样子。它包含三个文本视图和两个微调器。这个应用程序是为了帮助计算一个学期的学生gpa。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
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"
tools:context="com.mbedobe.android.samplegpacalculator.app.MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="C1"
android:id="@+id/course_textView"/>
<Spinner
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/spinner"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/course_textView"
android:layout_toEndOf="@+id/course_textView"
android:layout_marginLeft="23dp"
android:layout_marginStart="23dp" />
<Spinner
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/spinner2"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/spinner"
android:layout_toEndOf="@+id/spinner"
android:layout_marginLeft="23dp"
android:layout_marginStart="23dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/spinner2"
android:layout_toEndOf="@+id/spinner2"
android:id="@+id/gradePoints"
android:layout_marginLeft="23dp"
android:layout_marginStart="23dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/gradePoints"
android:layout_toEndOf="@+id/gradePoints"
android:id="@+id/gradeValue"
android:layout_marginLeft="23dp"
android:layout_marginStart="23dp"/>
</RelativeLayout>
答案 0 :(得分:1)
最佳解决方案是使用RecycleView
答案 1 :(得分:1)
RecyclerView使用custom adapter。在这种情况下,上面的布局将是每行的行布局。
使用上面的链接了解如何使用自定义布局创建自己的自定义RecyclerView适配器。
修改强>
好的,我会在这里给你基础知识。自定义RecyclerView需要三个主要功能。
他们是:
现在,让我们举一个例子,尝试解释一下。
您必须看过Gmail,WhatsApp等热门应用。 当您打开这些应用程序时,您会看到一个电子邮件/聊天等列表。 需要注意的一点是,每行的布局都是相同的,即使它们内部的内容不同。
这告诉我们两件事:首先,数据必须是相同类型对象的列表,其次是每行的布局是相同的。因此,要创建这样的listView或RecyclerView,我们不需要创建与行一样多的布局。每行可以重复使用一个布局。
因此,我们理解了三个需求中的两个。所需的最后一项是适配器。适配器是您的List并将列表中的每个项目转换为RecyclerView上的行。当用户滚动列表时,适配器会自动创建这些行,并在用户无法再看到这些行时将其删除。
如果您需要此代码,请与我们联系。我上传代码解释这个。但我建议你自己尝试一下。这并不难。
答案 2 :(得分:1)
您应该考虑使用ListView with BaseAdapter。
答案 3 :(得分:0)
使用ListView,recyclerView或在scrollview中动态添加项目。
使用ListView或RecyclerView将是您的最佳选择。
如果你在java中有很好的知识,我会给你最后一个应该用java工作的选项。 (只有步骤不完整的代码)
1) your xml file should contain scroll view.
2) for each item to be added (3 textview 2 spinner), add a layout and provide layout params for it i.e width/height/orientation/background etc.
3)add this layout to the scrollview you created in xml by
findViewById(R.id.scrollviewId).add(layout)
4)create your textviews/spinners in and give them layout params.{ this process is much logical in a pattern of your design so must be very careful}
5)add all these textviews/spinners in the layout you created in step 3.
注意:根据您的设计要求,您可能需要在步骤2/3中创建的布局和步骤4中创建的其他项目之间添加其他布局。
以下是您喜欢的代码:
LinearLayout myLayout = (LinearLayout)findViewById(R.id.layout_in_xml);
for(int i = 0; i < required_fields.length; i++){
LinearLayout lr = new RelativeLayout(DisplaySadip.this);
LayoutParams layoutParams = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
lr.serLayoutParams(layoutParams);
lr.setOrientation(LinearLayout.HORIZONTAL);
//add linear layout to your layout in xml
myLayout.add(lr);
//add textview, spinner to this layout now
TextView tv1 = new TextView(YourActivity.this)
tv1.setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
tv1.setText("......"+i);
lr1.add(tv1)
Spinner spinner1 = new Spinner(YourActivity.this)
spinner.setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
Spinner spinner2 = new Spinner(YourActivity.this)
spinner.setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
lr.add(spinner1);
lr.add(spinner2);
TextView tv2 = new TextView(YourActivity.this)
tv2.setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
tv2.setText("......"+i);
lr.add(tv2)
TextView tv3 = new TextView(YourActivity.this)
tv3.setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
tv3.setText("......"+i);
lr1.add(tv3)
}
它将添加在您的布局中添加许多您想要的视图。