0

有一行包含 14 个编辑文本。有两个用于动态添加和删除行的按钮。不知何故我可以做到这一点,我的问题是每次添加一行时,行的所有编辑文本都具有相同的 id 和名称。所以我的问题是。1.如何在单击添加按钮时更改edittext的名称和ID。2.添加如何将多行的值存储到数据库中。 在此处输入图像描述 我的代码是..
row.xml

<TableRow xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/tableRow1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"                
            android:background="@drawable/table_back"     
            android:layout_gravity="center_vertical"    >

        <EditText
                android:id="@+id/req"
                android:layout_width="85dp"
                android:layout_height="wrap_content"                    
                android:background="#00000000">
                <requestFocus />
        </EditText>

        <EditText
                android:id="@+id/fm"
                android:layout_width="82dp"
                android:layout_height="wrap_content"
                android:inputType="text"
                android:background="#00000000"
                android:ems="10" />
        <EditText
                android:id="@+id/effects"
                android:layout_width="82dp"
                android:inputType="text"
                android:layout_height="wrap_content"
                android:background="#00000000"
                android:ems="10" />
        <EditText
                android:id="@+id/sev"
                android:layout_width="30dp"
                android:layout_height="wrap_content"
                android:background="#00000000"
                android:layout_marginRight="10dp"
                android:inputType="text"
                android:ems="10" />
        <EditText
                android:id="@+id/causes"
                android:layout_width="82dp"
                android:layout_height="wrap_content"
                 android:inputType="text"
                android:background="#00000000"
                android:ems="10" />
        <EditText
                android:id="@+id/occ"
                android:layout_width="35dp"
                 android:inputType="text"
                android:layout_height="wrap_content"
                android:background="#00000000"
                android:layout_marginRight="7dp"
                android:ems="10" />
        <EditText
                android:id="@+id/process"
                android:layout_width="85dp"
                 android:inputType="text"
                android:layout_height="wrap_content"
                android:background="#00000000"
                android:ems="10" />
        <EditText
                android:id="@+id/det"
                android:layout_width="35dp"
                 android:inputType="text"
                android:layout_height="wrap_content"
                android:background="#00000000"
                android:layout_marginRight="3dp"
                android:ems="10" />
        <EditText
                android:id="@+id/rpn"
                android:layout_width="35dp"
                 android:inputType="text"
                android:layout_height="wrap_content"
                android:background="#00000000"
                android:layout_marginRight="5dp"
                android:ems="10" />
        <EditText
                android:id="@+id/recommended"
                android:layout_width="82dp"
                 android:inputType="text"
                android:layout_height="wrap_content"
                android:background="#00000000"
                android:layout_marginRight="2dp"
                android:ems="10" />
        <EditText
                android:id="@+id/sev2"
                android:layout_width="35dp"
                 android:inputType="text"
                android:layout_height="wrap_content"
                android:background="#00000000"
                android:layout_marginRight="3dp"
                android:ems="10" />
        <EditText
                android:id="@+id/occ2"
                android:layout_width="35dp"
                 android:inputType="text"
                android:layout_height="wrap_content"
                android:background="#00000000"
                android:layout_marginRight="8dp"
                android:ems="10" />
        <EditText
                android:id="@+id/det2"
                android:layout_width="35dp"
                 android:inputType="text"
                android:layout_height="wrap_content"
                android:background="#00000000"
                android:layout_marginRight="3dp"
                android:ems="10" />
        <EditText
                android:id="@+id/new_rpn"
                android:layout_width="35dp"
                 android:inputType="text"
                android:layout_height="wrap_content"
                android:background="#00000000"
                android:layout_marginRight="6dp"
                android:ems="10" />
        <EditText
                android:id="@+id/resp"
                android:layout_width="85dp"
                 android:inputType="text"
                android:layout_height="wrap_content"
                android:background="#00000000"
                android:ems="10" />
        <EditText
                android:id="@+id/target_date"
                android:layout_width="40dp"
                android:inputType="date"
                android:layout_height="wrap_content"
                android:background="#00000000"
                android:ems="10" />

创建.class

    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.create_fmea_2);

            mContainerView = (LinearLayout) findViewById(R.id.parentView);
            mAddButton = (ImageButton) findViewById(R.id.btnAddNewItem);
            mDeleteButton=(ImageButton)findViewById(R.id.btnDelete);

            // Add some examples
            inflateEditRow(count);
    }
          public void onAddNewClicked(View v) {


count++;
    inflateEditRow(count);      
    v.setVisibility(View.VISIBLE);
//  System.out.println("value of count "+count);
}

    public void onDeleteClicked(View v) {
        // remove the row by calling the getParent on button
    //  mContainerView.removeView((View) v.getParent());



                int del=count;
                if(del-->=1){
                mContainerView.removeViewAt(del);
                count--;

        } 
        else{
            Toast.makeText(getApplicationContext(), "Add row to delete", Toast.LENGTH_SHORT).show();
        }
              }

private void inflateEditRow(int id) { 
        alleds=new ArrayList<EditText>();
        int et_id=1;

        for(int i=1;i<=id;){


        //  System.out.println("value of i "+i);
            LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
              rowView = inflater.inflate(R.layout.row1, null);


            rowView.setId(count);
            i++;        

        }      

提前致谢。

4

2 回答 2

0

单行:

将所有 EditText 对象放在一个列表中。

当您想要存储数据时,只需迭代它们。

for (EditText et: editTextList) {
    addSingleRow(et.getText().toString() ; 
} 

使用它,他们拥有什么 id 或 name 并不重要。

多行:

Map<Integer, List<EditText>> editTextRows = new TreeMap<Integer, List<EditText>>();

for (Integer row: editTextRows.keySet()) {

    List<EditText> editTextList = editTextRows.get(row);

    for (EditText et: editTextList) {
        addSingleRow(et.getText().toString() ; 
    } 
} 

为什么TreeMap你可能会问。它只是有一个很好的功能,它对键进行排序,以便在迭代它们时按顺序获取行。

于 2013-09-28T07:26:54.910 回答
0

这是可能的,通过添加动态编辑文本和按钮和图像。 检查这篇文章

于 2014-11-13T14:33:48.333 回答