如何创建多行活动

时间:2017-02-12 15:47:35

标签: android listview

如何为每行创建具有相同数据的多行应用。这就是所有行的样子。它包含三个文本视图和两个微调器。这个应用程序是为了帮助计算一个学期的学生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>

4 个答案:

答案 0 :(得分:1)

最佳解决方案是使用RecycleView

答案 1 :(得分:1)

RecyclerView使用custom adapter。在这种情况下,上面的布局将是每行的行布局。

使用上面的链接了解如何使用自定义布局创建自己的自定义RecyclerView适配器。

修改

好的,我会在这里给你基础知识。自定义RecyclerView需要三个主要功能。

他们是:

  1. 对象列表(您的数据)
  2. 每行的自定义布局
  3. 将您的数据转换为上述布局的适配器。
  4. 现在,让我们举一个例子,尝试解释一下。

    您必须看过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)
}

它将添加在您的布局中添加许多您想要的视图。