如何动态复制特定的tablerow

时间:2014-02-03 20:43:30

标签: android tablerow

我想创建一个包含其元素的tablerow的副本,并在单击按钮时创建相同的参数。有没有办法做到这一点? 我不成功的尝试是这样的: XML:

<TableRow 
        android:id="@+id/my_row"
        >


        <ImageView 
            android:layout_width="100dp"
            android:layout_height="95dp"
            android:src="@drawable/dalass"
            android:layout_weight="1"
            />
        <LinearLayout 
            android:orientation="vertical"
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            android:layout_weight="1">

        <AutoCompleteTextView
                android:id="@+id/autocompletetextview"
                android:layout_width="match_parent"
                android:layout_height="50dp"
                android:text=""
                android:inputType="numberDecimal"
                 android:imeOptions="flagNoExtractUi"
                 android:textColor="#000000"
                 >
        </AutoCompleteTextView>
        <EditText 
            android:id="@+id/edit_sale2"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:inputType="numberDecimal"
            android:imeOptions="flagNoExtractUi"
            />

       </LinearLayout>
    </TableRow>

的java:

View.OnClickListener handler_add=new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        LayoutInflater inflator = Sale.this.getLayoutInflater();
                    TableRow rowView = (TableRow) inflator.inflate(R.layout.activity_sale, null);
        table_sale.addView(rowView);

    }

};

我不知道inflater究竟做了什么。请有人帮助我:)。

1 个答案:

答案 0 :(得分:3)

LayoutInflater.inflate方法的第二个参数,您当前设置为null,是您要扩展到的布局的根。试试这个;

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    LayoutInflater inflator = Sale.this.getLayoutInflater();
                TableRow rowView = new TableRow(v.getContext());
                inflator.inflate(R.layout.activity_sale, rowView);
    table_sale.addView(rowView);

}

您还应该编辑xml,以便将其合并到rowView对象中,以避免不必要的其他视图。

<强> activity_sale.xml

<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/my_row" >


    <ImageView 
        android:layout_width="100dp"
        android:layout_height="95dp"
        android:src="@drawable/dalass"
        android:layout_weight="1" />

    <LinearLayout 
        android:orientation="vertical"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_weight="1">

        <AutoCompleteTextView
            android:id="@+id/autocompletetextview"
            android:layout_width="match_parent"  
            android:layout_height="50dp"
            android:text=""
            android:inputType="numberDecimal"
            android:imeOptions="flagNoExtractUi"
            android:textColor="#000000" >

        </AutoCompleteTextView>

        <EditText 
            android:id="@+id/edit_sale2"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:inputType="numberDecimal"
            android:imeOptions="flagNoExtractUi" />

   </LinearLayout>
</merge>