[英]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.