簡體   English   中英

將動態表格行與textwatcher一起添加到android中的表格布局

[英]Add Dynamic table rows to table layout in android together with textwatcher

我嘗試在Android應用中將新的表行添加到TableLayout中。 通過遵循android教程,我成功添加了具有多個edittexts的新表行。 現在,我要做的是,我需要使用TextWatcher獲取這些edittext的用戶值。 我搜索了很多教程,嘗試了很多,但是失敗了。 這是我向其添加按鈕之前應用程序的外觀。

在此處輸入圖片說明

我需要的是通過單擊按鈕打開第二行。如果用戶需要,並且如果用戶輸入值以使用他們需要使用和的edittext字段,則最終結果應相應顯示。 這是我以前的代碼,我發布了一個問題並在此處解決了該問題。 結合使用Android TextWatcher和多個用戶輸入值並更新這些值

如果有人可以幫助我,我非常感謝您的幫助。 提前致謝。

現在這是我的新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);
    }


    }

1)首先在父布局xml中將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;
    }  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM