如何在android中动态添加多列的行?

时间:2012-09-07 12:08:38

标签: android user-interface dynamic-ui

您好我已经像下面的屏幕一样开发了UI。现在我想在最后加按钮点击事件的UI中添加最后一行。

我知道如何动态添加ButtonEditText,但我不知道如何动态添加和删除具有多列的行。

编辑: - 关于最后一行的一个重要事项是每列都是可编辑的。这意味着我需要每列的引用来获取它的内容。当我动态添加行时加上按钮应放置在新行中。同样,如果我删除行行加按钮应该转移到上一行。

我该怎么做。任何指南或任何方法都将受到赞赏。

enter image description here 这是我的XML文件。

<?xml version="1.0" encoding="utf-8"?>
 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  >

<RelativeLayout 
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<TextView
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="40dp"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:background="@drawable/navi_bar" />

<Button
    android:id="@+id/title_bar_btnBack"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="35dp"
    android:layout_alignParentLeft="true"
    android:layout_marginLeft="10dp"
    android:layout_marginTop="3dp"
    android:background="@drawable/back_button_image" />

<Button
    android:id="@+id/title_bar_btnExport"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="35dp"
    android:layout_alignParentRight="true"
    android:layout_alignTop="@+id/title_bar_btnBack"
    android:layout_marginRight="10dp"
    android:background="@drawable/export_button_normal" />

<!-- Create PDF Part 2 -->


<ImageView
    android:id="@+id/pdf_Upper_Image"
    android:layout_width="wrap_content"
    android:layout_height="45dp"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_below="@+id/title_bar_btnBack"
    android:background="@drawable/grid_bg_part1" />

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/pdf_Upper_Image"
    android:layout_alignParentLeft="true"
    android:text="Kassenbuch"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:textColor="#3EC7F9"
    android:textSize="23dp"
    android:textStyle="bold" />

<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/button1"
    android:layout_marginLeft="10dp"
    android:layout_marginTop="2dp"
    android:layout_toRightOf="@+id/textView1"
    android:text="Name :"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="#3EC7F9"
    android:textSize="12dp" />

<TextView
    android:id="@+id/txtName"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/textView2"
    android:layout_alignTop="@+id/textView2"
    android:layout_marginLeft="5dp"
    android:layout_toRightOf="@+id/textView2"
    android:text="Akshay"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="#3EC7F9"
    android:textSize="12dp" />

<!-- Custom Pdf Part 2 -->

<ImageView
    android:id="@+id/pdf_Middle_Image"
    android:layout_width="wrap_content"
    android:layout_height="40dp"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_below="@+id/pdf_Upper_Image"
    android:background="@drawable/grid_bg_part2" 
    android:layout_marginLeft="1dp"
    android:layout_marginRight="1dp"
    />

<TextView
    android:id="@+id/textView3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignTop="@+id/pdf_Middle_Image"
    android:layout_marginLeft="2dp"
    android:text="Einnahmen"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="#3EC7F9" />


<TextView
    android:id="@+id/textView4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/txtName"
    android:layout_alignTop="@+id/txtName"
    android:layout_marginLeft="82dp"
    android:layout_toRightOf="@+id/txtName"
    android:text="Month :"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="#3EC7F9"
    android:textSize="12dp" />

<TextView
    android:id="@+id/textView5"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/textView1"
    android:layout_alignBottom="@+id/textView1"
    android:layout_alignLeft="@+id/textView4"
    android:layout_marginBottom="2dp"
    android:text="Mand Nr. :"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="#3EC7F9"
    android:textSize="12dp" />



<TextView
    android:id="@+id/txtMand"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/textView5"
    android:layout_alignTop="@+id/textView5"
    android:layout_toRightOf="@+id/textView5"
    android:text="Mand"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="#3EC7F9"
    android:textSize="12dp" />




<TextView
    android:id="@+id/txtMonth"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/txtName"
    android:layout_alignTop="@+id/textView4"
    android:layout_toRightOf="@+id/textView5"
    android:text="05"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="#3EC7F9" 
    android:textSize="12dp" 
    />



<TextView
    android:id="@+id/textView8"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/txtYear"
    android:layout_alignTop="@+id/txtMonth"
    android:layout_toLeftOf="@+id/title_bar_btnExport"
    android:text="Year :"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="#3EC7F9"
    android:textSize="12dp" />

<TextView
    android:id="@+id/textView9"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/textView5"
    android:layout_alignBottom="@+id/textView5"
    android:layout_alignLeft="@+id/textView8"
    android:text="Blatt :"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="#3EC7F9"
    android:textSize="12dp" />

<TextView
    android:id="@+id/txtYear"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/txtMonth"
    android:layout_alignLeft="@+id/title_bar_btnExport"
    android:layout_alignTop="@+id/txtMonth"
    android:text="2012"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="#3EC7F9"
    android:textSize="12dp" />

<TextView
    android:id="@+id/textView6"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignTop="@+id/pdf_Middle_Image"
    android:layout_marginLeft="10dp"
    android:layout_toRightOf="@+id/textView3"
    android:text="Ausgabne"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="#3EC7F9" >
</TextView>

<TextView
    android:id="@+id/textView7"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignTop="@+id/pdf_Middle_Image"
    android:layout_marginLeft="15dp"
    android:layout_toRightOf="@+id/textView6"
    android:text="Bestand"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="#3EC7F9" />

<TextView
    android:id="@+id/textView12"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignTop="@+id/pdf_Middle_Image"
    android:layout_toLeftOf="@+id/txtMand"
    android:text="Datum"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="#3EC7F9" />

<TextView
    android:id="@+id/textView13"
    android:layout_width="30dp"
    android:layout_height="wrap_content"
    android:layout_alignTop="@+id/pdf_Middle_Image"
    android:layout_toLeftOf="@+id/textView5"
    android:text="Beleg Konto"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="#3EC7F9"
    android:textSize="8dp" />

<TextView
    android:id="@+id/textView14"
    android:layout_width="30dp"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/textView13"
    android:layout_alignTop="@+id/pdf_Middle_Image"
    android:layout_marginRight="03dp"
    android:layout_toLeftOf="@+id/textView13"
    android:text="Gegen Konto"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="#3EC7F9"
    android:textSize="08dp" />

<TextView
    android:id="@+id/textView15"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/textView3"
    android:layout_alignRight="@+id/textView1"
    android:layout_below="@+id/textView14"
    android:text="Anfangsbestand/Ubertrag"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="#3EC7F9"
    android:textSize="9dp" />

<TextView
    android:id="@+id/textView11"
    android:layout_width="30dp"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/textView13"
    android:layout_alignTop="@+id/pdf_Middle_Image"
    android:layout_marginLeft="25dp"
    android:layout_toRightOf="@+id/textView12"
    android:text="USt satz."
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="#3EC7F9"
    android:textSize="09dp" />

<TextView
    android:id="@+id/txtBlatt"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/textView9"
    android:layout_alignBottom="@+id/textView9"
    android:layout_toRightOf="@+id/textView9"
    android:text="Blatt"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="#3EC7F9"
    android:textSize="12dp" />


<TextView
    android:id="@+id/textView10"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/textView11"
    android:layout_alignLeft="@+id/textView9"
    android:text="Text"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="#3EC7F9" />

<include android:id="@+id/firstRow"
     layout="@layout/custom_pdf3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/pdf_Middle_Image"
        android:layout_marginLeft="2dp"
        android:layout_marginRight="2dp"/>


 </RelativeLayout>

谢谢

6 个答案:

答案 0 :(得分:2)

创建一个代表完整行的布局,然后您可以使用:

来自public View inflate (int resource, ViewGroup root)LayoutInflater包中的一个类)的

android.view来指定来自指定XML资源的 new view hierarchy (例如您的新资源)行)。

现在,您可以使用特定标记动态地将此视图(您的行)添加到主布局中(例如向布局动态添加按钮)。

答案 1 :(得分:1)

尝试在运行时创建整个布局。创建一个包含所有ur列的单行,并设置最后一列的可见性。按下加号按钮时更改可见性。 我认为创建一行类型相对布局会很好。当你想删除一行然后你必须计算主布局中的相对布局,然后删除你想要删除的索引。

答案 2 :(得分:0)

您需要使用custom views.然后每个视图都可以是一个复杂的视图,您可以按照自己的意愿行事,这项任务应该不容易。

<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/button1"
    android:layout_marginLeft="10dp"
    android:layout_marginTop="2dp"
    android:layout_toRightOf="@+id/textView1"
    android:text="Name :"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="#3EC7F9"
    android:textSize="12dp" />

<com.sample.MyCustomView
    android:id="@+id/myView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

然后MyCustomView可以是线性布局或其他任何内容。

答案 3 :(得分:0)

上面的xml

您在Textview中完成了所有操作并进行了调整

而不是使用它,你必须在xml文件中创建Tablelayout

onButtonClick事件你必须动态创建一个新的tablerow然后使用tablerow.addview(componentsname)添加组件,最后将tablerow添加到tablelayout

Simple TableLayout

答案 4 :(得分:0)

在尝试了很多不同的事情后,我解决了我的问题,如下所示。我在xml中进行了一些更改。我使用LinearLayoutScrollView

我创建了一个完整行的xml文件。现在我的任务是在LinearLayout中添加xml,我按以下方式添加。我每次都在按钮点击事件上调用此方法

     public void AddDynamicView() {

    linearLayout = (LinearLayout) findViewById(R.id.show_pdfTableLayout);

    layoutInflater = (LayoutInflater) getApplicationContext()
            .getSystemService(LAYOUT_INFLATER_SERVICE);
    view = layoutInflater.inflate(R.layout.custom_pdf3, null);

    linearLayout.addView(view);
    list.add(view);  // Here I have created list of View so that I can get the id of specific view.
          }

我已经尝试使用TableLayout,但我遇到了占用整行的问题。这就是我使用LinearLayout的原因。

答案 5 :(得分:0)

可能我不太了解!!!

您可以使用ListView和Adapter执行问题中提到的所有操作。 您可以提供一个数组来保存字段,使用数组提供适配器并使用适配器提供listView。 如果需要新的Row,只需在数组中添加一个元素即可。 如果要删除行,只需将其从数组中删除即可。 如果要对项目进行排序,只需对数组进行排序即可。 如果要选择prev / next,只需使用listview选择方法。

我很想知道你检查了你的答案并不是绝对正确的方法。这是真的,但是如果您的目标ui很复杂,那么页面将需要大量的时间来渲染和滚动,而不是动态和优化的ListView。

如果你认为我的回答听起来不错,请告诉我用一些代码更新它。