1

我嘗試將新的表格行添加到我的android應用中的TableLayout中。通過遵循一個android教程,我成功地添加了具有多個edittext的新表格行。現在我試圖做的是,我需要使用TextWatcher獲取這些edittext的用戶值。我搜索了很多教程並嘗試了很多,但是我失敗了。 這是我添加按鈕之前,我的應用程序的樣子。將動態表格行與textwatcher一起添加到android的表格佈局

enter image description here

我需要的是通過點擊一個按鈕,如果用戶想打開第二排,如果用戶輸入值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); 
    } 


    } 
+0

您可以使用addView(查看)方法在父視圖動態添加視圖。 – ashish

+0

@ashish,我使用addView()和edittext字段。但它不起作用。因爲我是一個機器人新手,你可以請解釋給我,如果可以的話。 – Lash

+0

請檢查我的回答 – ashish

回答

0

1)首先在父母佈局文件,如下放linearlayot是:

<LinearLayout 
       android:id="@+id/parent_layout" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:orientation="vertical"></LinearLayout> 

2)比每次點擊都要添加一個佈局。

3)您現在可以添加您的視圖在父母象下面這樣:

LinearLayout parent_layout = (LinearLayout)findViewById(R.id.parent_layout); 
        for(i=0;i<3;i++) 
        { 
         parentlayout.addView(myViewReview(data.get(i))); 
        } 


public View myViewReview() { 

     View v; // Creating an instance for View Object 
     LayoutInflater inflater = (LayoutInflater) getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     v = inflater.inflate(R.layout.row_facility_review, null); 
     TextView row_reviewer_name = (TextView) v.findViewById(R.id.row_reviewer_name); 
     TextView row_review_text = (TextView) v.findViewById(R.id.row_review_text); 
     return v; 
    } 
+0

謝謝你試圖幫助我,我試着理解你提到的,但是因爲我是新的,所以我會遇到問題。所以請你能給我一些教程或步驟來引用這個,如果你知道。 – Lash

+0

這是簡單的步驟,我已經給你提供答案。 – ashish

+0

我會試着讓你知道,謝謝 – Lash