我嘗試將新的表格行添加到我的android應用中的TableLayout中。通過遵循一個android教程,我成功地添加了具有多個edittext的新表格行。現在我試圖做的是,我需要使用TextWatcher獲取這些edittext的用戶值。我搜索了很多教程並嘗試了很多,但是我失敗了。 這是我添加按鈕之前,我的應用程序的樣子。將動態表格行與textwatcher一起添加到android的表格佈局
我需要的是通過點擊一個按鈕,如果用戶想打開第二排,如果用戶輸入值EDITTEXT他們需要使用和領域,最終的結果應該相應地顯示。 這是我以前的代碼,我發佈了一個問題,並在這裏解決它。 Using Android TextWatcher with multiple user input values and Update thses values
如果有人可以幫助我,我非常感謝您的幫助。提前致謝。
現在,這是我的新的XML代碼
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button
android:id="@+id/Button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:text="Add Line" />
<ScrollView
android:id="@+id/scrollView2"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/Button1"
android:layout_marginTop="97dp">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TableLayout
android:id="@+id/TableLayout1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:divider="?android:attr/dividerHorizontal"
android:showDividers="middle">
<TableRow
android:id="@+id/TableRow1"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<EditText
android:id="@+id/editText1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:ems="4"
android:padding="2dp" />
<EditText
android:id="@+id/editText2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:ems="4"
android:padding="2dp" />
<EditText
android:id="@+id/editText3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:ems="4"
android:padding="2dp" />
<TextView
android:id="@+id/TextViewsub1"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:hint="$ 0.00"
android:textSize="18dip" />
</TableRow>
<TableRow
android:id="@+id/TableRow2"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<EditText
android:id="@+id/editText4"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:ems="4"
android:padding="2dp" />
<EditText
android:id="@+id/editText5"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:ems="4"
android:padding="2dp" />
<EditText
android:id="@+id/editText6"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:ems="4"
android:padding="2dp" />
<TextView
android:id="@+id/TextViewsub2"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:hint="$ 0.00"
android:textSize="18dip" />
</TableRow>
</TableLayout>
</RelativeLayout>
</ScrollView>
<TextView
android:id="@+id/textView12"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/scrollView2"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_marginEnd="87dp"
android:layout_marginRight="87dp"
android:hint="Rs: 0.00" />
<TextView
android:id="@+id/textView13"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/textView12"
android:layout_marginEnd="86dp"
android:layout_marginRight="86dp"
android:layout_toLeftOf="@+id/textView12"
android:layout_toStartOf="@+id/textView12"
android:text="Total Value" />
</RelativeLayout>
現在,這怎麼我的Java文件看起來像
public class NewClass extends AppCompatActivity implements View.OnClickListener {
Button btnAdd;
int counter = 0;
EditText edit1, edit2, edit3;
TextView textViewSub1, textViewResult;
@Override
protected void onCreate(Bundle savedInstanceState) {
/*First row variables*/
edit1 = (EditText) findViewById(R.id.editText1);
edit2 = (EditText) findViewById(R.id.editText2);
edit3 = (EditText) findViewById(R.id.editText3);
textViewSub1 = (TextView) findViewById(R.id.TextViewsub1);
textViewResult = (TextView) findViewById(R.id.textView12);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_new_class);
//add line button
btnAdd = (Button) findViewById(R.id.Button1);
btnAdd.setOnClickListener(this);
edit1.addTextChangedListener(new LashCustomTextWatcher1());
edit2.addTextChangedListener(new LashCustomTextWatcher1());
edit3.addTextChangedListener(new LashCustomTextWatcher1());
}
public class LashCustomTextWatcher1 implements TextWatcher {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
textViewResult.setText(lashCalculate());
}
}
public void onClick(View view) {
TableLayout tl = (TableLayout) findViewById(R.id.TableLayout1);
TableRow tr = new TableRow(this);
//TextView tv = new TextView(this);
//tv.setText("text ");
edit1 = new EditText(this);
//edit1.setText("Hello " + counter++);
edit2 = new EditText(this);
//edit2.setText("Item no " + counter++);
edit3 = new EditText(this);
//edit3.setText("Qty no " + counter++);
textViewSub1 = new TextView(this);
tr.addView(edit1);
tr.addView(edit2);
tr.addView(edit3);
tr.addView(textViewSub1);
//tr.addView(cb);
tl.addView(tr, new TableLayout.LayoutParams(TableLayout.LayoutParams.WRAP_CONTENT, TableLayout.LayoutParams.WRAP_CONTENT));
}
public String lashCalculate() {
//declaring variables
double row1_value = 0;
DecimalFormat df = new DecimalFormat("0.00");
//calculate first row
if (!edit1.getText().toString().equals("") && !edit2.getText().toString().equals("")) {
double num1 = Double.parseDouble((edit1.getText().toString()));
double num2 = Double.parseDouble((edit2.getText().toString()));
row1_value = num1 * num2;
double num3 = 0;
if (!edit3.getText().toString().equals("")) {
num3 = Double.parseDouble((edit3.getText().toString()));
row1_value = (((100 - num3) * num2) * num1)/100;
}
textViewSub1.setText(df.format(row1_value));
}
return df.format(row1_value);
}
}
您可以使用addView(查看)方法在父視圖動態添加視圖。 – ashish
@ashish,我使用addView()和edittext字段。但它不起作用。因爲我是一個機器人新手,你可以請解釋給我,如果可以的話。 – Lash
請檢查我的回答 – ashish