有一行包含14个edittext.have两个按钮,用于动态添加和删除行。我能够做到这一点,我的问题是每当我添加一行时,行的所有edittext都有相同的id和名称那我的问题是。
1.如何在添加按钮单击时更改edittext的名称和ID。
2.add如何将多行的值存储到数据库中。
我的代码是..
的 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" />
Create.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++;
}
提前感谢。
答案 0 :(得分:0)
单行:
将所有EditText对象放在列表中。
当您想要存储数据时,只需迭代它们即可。
for (EditText et: editTextList) {
addSingleRow(et.getText().toString() ;
}
使用它,它们具有什么ID或名称无关紧要。
多行:
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。它只是具有很好的功能,它可以对键进行排序,以便在迭代时按顺序获取行。
答案 1 :(得分:0)
这是可能的,添加动态edittext和按钮和图像。 check this post