5

嗨,我已经开发了如下屏幕所示的 UI。现在我想在最后一个加号按钮单击事件中添加 UI 中的最后一行。

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

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

我该怎么做。任何指南或任何方法都将不胜感激。

在此处输入图像描述 这是我的 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>

谢谢

4

8 回答 8

2

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

public View inflate (int resource, ViewGroup root)LayoutInflaterandroid.view包中的一个类)到new view hierarchy从指定的 XML 资源(例如你的新行)中膨胀一个。

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

于 2012-09-07T12:30:59.480 回答
1
  1. 创建一个 XML 布局文件,它将代表列表视图中的一个“行”。
  2. 使用基本适配器实现自定义适配器。
  3. 在该getView()方法中,膨胀 Xml 布局,引用内部项目(使用outerLayout.findViewById(),在Listeners此处设置,最后returnview.
  4. 为您的侦听器编写实现。

够简单吗?:-)

于 2012-09-10T06:18:29.700 回答
1

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

于 2012-09-10T11:54:37.960 回答
0

我想你会通过一个例子来最好地理解。让我们稍微简化一下。假设您的主要布局是这样的:

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/main_layout" >

</TableLayout>

这很简单TableLayout,还没有任何视图(您可以在其中包含预烘焙的行)。现在你想要创建TableRows你想要动态添加的东西,并分别处理它的子视图,对吧?TableRow你可以在 xml 中创建你的整体:

<?xml version="1.0" encoding="utf-8"?>
<TableRow xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/tablerow_textview"
        android:text="Hello" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/tablerow_button"
        android:text="World" />
</TableRow>

然后是java部分。假设您想将其中的 10 行添加到 TableLayout 中,并分别处理每一行按钮。您可以这样做(您必须有权访问 Context 对象):

// get the main TableLayout from xml
TableLayout layout = (TableLayout) findViewById(R.id.main_layout);  

// get a LayoutInflater object. 'this' is the current Activity
LayoutInflater inflater = LayoutInflater.from(this);

for(int i=0; i<10; i++)
{
    //Create an inflated instance of that layout
    TableRow row = (TableRow) inflater.inflate(R.layout.table_row, null);

    //Notice, that we call the findViewById() function on the previously 
    //inflated layout, which means, that we can only access its subviews
    Button rowButton = (Button) row.findViewById(R.id.tablerow_button);
    TextView rowText = (TextView) row.findViewById(R.id.tablerow_textview);

    //Now that you have those Views, you can do whatever you want with them, (set
    an onClickListener, change the text, etc)

    //finally we need to add the row to the table
    layout.addView(row);
}

如果你的包装器为你的膨胀布局创建了一个类,它有自己的 getter-setter 函数,你可以用 new 操作符实例化它,所有的膨胀都将在后台完成,这也是一个好主意。

于 2012-09-10T06:16:23.350 回答
0

您需要使用自定义视图。然后每个视图都可以是一个复杂的视图,你可以做任何你想做的事情,这个任务应该不容易。

<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可以是线性布局或其他。

于 2012-09-10T06:46:01.553 回答
0

在上面的 xml

你在 Textview 中做了所有的事情并进行了调整

Tablelayout而不是使用它,您必须在您的 xml 文件中创建一个。

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

简单的表格布局

于 2012-09-14T11:09:10.363 回答
0

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

我创建了一个具有完整行的 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.

于 2012-09-15T08:06:34.603 回答
0

可能我没看明白!!!

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

我想知道您检查了您的答案,这不是绝对正确的方法。确实如此,但是如果您的目标 ui 很复杂,那么页面将需要比动态和优化的 ListView 更多的时间来呈现和滚动。

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

于 2012-09-16T08:24:07.680 回答