نوشته شده توسط
kamran_14
سلام
خسته نباشید
ما در این کد اطلاعات یک اکتیویتی رو در یک اکتیویتی دیگر انتقال دادیم
در این کد هم Activity.findViewById نوشته شده و یه بار دیگر linearlayout را پیدا کرده و نوشته شده linearlayout.findViewById
آیا نیازه یه بار دیگه linearlayout را پیدا کنیم؟ مگر activity کافی نیست؟
کد HTML:
package com.google.myapplication;
import android.app.Activity;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.LinearLayout;
/**
* Created by user on 03/02/2019.
*/
public class FormInfo {
private Activity activity;
private LinearLayout linearLayout;
private EditText txtName;
private EditText txtPhone;
private EditText txtEmail;
private CheckBox chk;
private Button button;
public FormInfo(Activity activity, int linearLayoutId)
{
this.activity=activity;
linearLayout=(LinearLayout)activity.findViewById(linearLayoutId);
init();
}
private void init()
{
txtName=(EditText)linearLayout.findViewById(R.id.editText2);
txtEmail=(EditText)linearLayout.findViewById(R.id.editText3);
txtPhone=(EditText)linearLayout.findViewById(R.id.editText4);
chk=(CheckBox)linearLayout.findViewById(R.id.checkBox);
button=(Button)linearLayout.findViewById(R.id.button2);
}
}
الان مشکل چی دوست عزیز! به این اشاره نکردید که!
منظورتون از این سوال چی ؟
آیا نیازه یه بار دیگه linearlayout را پیدا کنیم؟ مگر activity کافی نیست؟
الان شما که در سازنده یک آبجکت دیگه از linearlyaout دوباره ساختید!
به نظرم اینطوری خیلی بهتره...
package com.google.myapplication;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.LinearLayout;
/**
* Created by user on 03/02/2019.
*/
public class FormInfo {
private LinearLayout linearLayout;
private EditText txtName;
private EditText txtPhone;
private EditText txtEmail;
private CheckBox chk;
private Button button;
public FormInfo(LinearLayout lLayout)
{
this.linearLayout=lLayout;
init();
}
private void init()
{
txtName=(EditText)linearLayout.findViewById(R.id.e ditText2);
txtEmail=(EditText)linearLayout.findViewById(R.id. editText3);
txtPhone=(EditText)linearLayout.findViewById(R.id. editText4);
chk=(CheckBox)linearLayout.findViewById(R.id.check Box);
button=(Button)linearLayout.findViewById(R.id.butt on2);
}
}
هم سبکتره و هم وابستگی ها را کمینه کردیم!
والبته این روش که خیلی کم هزینه تر هست و هم شی FLY Weight استفاده شده وهم وابستگی ها کاهش پیدا کرده...
package com.google.myapplication;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.LinearLayout;
/**
* Created by user on 03/02/2019.
*/
public class FormInfo {
private
List<View> list_View ;
public FormInfo(list<View> lView){
list_View = lView;
}
private void show(){
txtName = list_View.get(0);
txtName = list_View.get(1);
txtEmail= list_View.get(2);
txtPhone= list_View.get(3);
chk = list_View.get(4);
button = list_View.get(5);
}
}
public class Activity {
private void setFormInfo(){
LinearLayout linearLayout=(LinearLayout)activity.findViewById(l inearLayoutId);
List<View> list_View = ArrayList<View>();
list_View.add((EditText)linearLayout.findViewById( R.id.editText2))
list_View.add((EditText)linearLayout.findViewById( R.id.editText3))
list_View.add((EditText)linearLayout.findViewById( R.id.editText4))
list_View.add((CheckBox)linearLayout.findViewById( R.id.checkBox))
list_View.add((Button)linearLayout.findViewById(R. id.button2)))
FormInfo form = new FormInfo(list_View);
form.show();
}
}