我有一个扩展LinearLayout的自定义布局类。当我点击+按钮时,它会在该按钮下方添加另一个布局,如图所示。所以我有一个父布局,其中包含另一个布局(每个布局都有自己的颜色)。但是当我想要更改某些文本并将其键入EditText(布局1)时,它总是在最后一个布局中设置Text。
我知道它正在发生,因为当我创建我的布局的另一个实例时,它会覆盖" textView的名称。我试过getChildAt();但它的View类型,没有setText方法。任何帮助深表感谢。谢谢! :)
public class PracovnikLayout extends LinearLayout {
private MySpinner jmenoSp;
public static MyTextView odpracovanoTw, vydelanoTw, skoleniTw, skupinaTw, pracovnikTw;
private MyEditText hodinyEt, skoleniEt;
private MyButton pridatBt;
private CheckBox skoleniCh;
@SuppressWarnings("unused")
private MySQLiteHelper db;
public static int pocetPracovniku = 1;
private OperaceLayout operaceLayout;
private LinearLayout pracovniciLayout, pracovnikLayout;
public PracovnikLayout(Context context) {
super(context);
db = new MySQLiteHelper(getContext());
Random rnd = new Random();
int color = Color.argb(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256));
this.setBackgroundColor(color);
skupinaTw = new MyTextView(context.getApplicationContext(), SkupinyLayout.skupinaCislo);
skupinaTw.setId(pocetPracovniku);
this.addView(skupinaTw);
Animation hyperspaceJumpAnimation = AnimationUtils.loadAnimation(getContext(), R.anim.abc_slide_in_bottom);
this.startAnimation(hyperspaceJumpAnimation);
this.addView(new Oddelovac(getContext(), LinearLayout.LayoutParams.MATCH_PARENT, 2));
pracovnikTw = new MyTextView(context.getApplicationContext(), "Pracovnik "+pocetPracovniku);
this.addView(pracovnikTw);
this.addView(new Oddelovac(getContext(), LinearLayout.LayoutParams.MATCH_PARENT, 2));
MySQLiteHelper db = new MySQLiteHelper(getContext());
ArrayList<String> spinnerArray = db.getPracovnici();
jmenoSp = new MySpinner(context.getApplicationContext(), spinnerArray);
this.addView(jmenoSp);
this.addView(new Oddelovac(getContext(), LinearLayout.LayoutParams.MATCH_PARENT, 2));
hodinyEt = new MyEditText(context, "10");
hodinyEt.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(!hasFocus){
String hodiny = hodinyEt.getText().toString();
try
{
double hodinyDouble = Double.parseDouble(hodiny);
odpracovanoTw.setText(""+hodinyDouble*60);
//String a = DatumLayout.odpracovanoTw.getText().toString();
//int b = Integer.parseInt(a)*60;
//DatumLayout.odpracovanoTw.setText(""+((hodinyDouble*60)+b));
} catch (NumberFormatException e) {
Toast.makeText(getContext(), "Zadejte správné číslo", Toast.LENGTH_SHORT).show();
odpracovanoTw.setText("Odpracováno: 0");
}
}
}
});
this.addView(hodinyEt);
this.addView(new Oddelovac(getContext(), LinearLayout.LayoutParams.MATCH_PARENT, 2));
odpracovanoTw = new MyTextView(context, "Odpracováno: 0");
this.addView(odpracovanoTw);
this.addView(new Oddelovac(getContext(), LinearLayout.LayoutParams.MATCH_PARENT, 2));
vydelanoTw = new MyTextView(context, "Vyděláno: ");
this.addView(vydelanoTw);
this.addView(new Oddelovac(getContext(), LinearLayout.LayoutParams.MATCH_PARENT, 2));
skoleniTw = new MyTextView(context, "Školení?");
this.addView(skoleniTw);
skoleniCh = new CheckBox(context);
skoleniCh.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked){
skoleniEt.setEnabled(true);
}else{
skoleniEt.setEnabled(false);
}
}
});
this.addView(skoleniCh);
skoleniEt = new MyEditText(context, "3");
skoleniEt.setEnabled(false);
this.addView(skoleniEt);
this.addView(new Oddelovac(getContext(), LinearLayout.LayoutParams.MATCH_PARENT, 2));
pridatBt = new MyButton(context, "+", "p");
pridatBt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PracovniciActivity.pll.addView(new PracovnikLayout(getContext()));
}
});
this.addView(pridatBt);
this.addView(new Oddelovac(getContext(), LinearLayout.LayoutParams.MATCH_PARENT, 2));
for(int i = 0; i<= getChildCount()-1;i++){
Log.d("tag", getChildAt(i).toString());
}
Toast.makeText(getContext(), ""+(this.getChildCount()), Toast.LENGTH_SHORT).show();
pocetPracovniku++;
}
}