如何根据ID设置文本?

时间:2014-06-22 11:56:12

标签: android

我有一个扩展LinearLayout的自定义布局类。当我点击+按钮时,它会在该按钮下方添加另一个布局,如图所示。所以我有一个父布局,其中包含另一个布局(每个布局都有自己的颜色)。但是当我想要更改某些文本并将其键入EditText(布局1)时,它总是在最后一个布局中设置Text。

Image 1

我知道它正在发生,因为当我创建我的布局的另一个实例时,它会覆盖" 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++;

}

}

0 个答案:

没有答案