3

我有这段代码,每次前一个 lineaLayout 的编辑文本失去焦点时,我都会在其中膨胀一个包含 3 个编辑文本的线性布局。我只想在最近创建的 editTexts 上使用 onFocusChangeListener。相反,仅当第一个 linearLayout 失去焦点时才调用 onFocusChangeListener 而其余的则不会。

protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.sale_purchase_vouch);
    no=0;
    for(int i=0;i<30;i++)
        flag[i]=true;

    save=(Button)findViewById(R.id.Save);
    save.setText("Confirm Purchase");
    LayoutInflater l=getLayoutInflater();
    container=(LinearLayout)findViewById(R.id.container);
    row[no]=(LinearLayout)l.inflate(R.layout.row, container);
    items[no]=(AutoCompleteTextView)row[no].findViewById(R.id.item);
    quants[no]=(EditText)row[no].findViewById(R.id.quant);
    rates[no]=(EditText)row[no].findViewById(R.id.rate);

    quants[no].setOnFocusChangeListener(this);
    flag[no]=false;


}


@Override
public void onFocusChange(View arg0, boolean arg1) {
    // TODO Auto-generated method stub
    if(flag[no+1]==true){

        if(arg1==false){
            no++;
    LayoutInflater g=getLayoutInflater();

    row[no]=(LinearLayout)g.inflate(R.layout.row, container);
    items[no]=(AutoCompleteTextView)row[no].findViewById(R.id.item);
    quants[no]=(EditText)row[no].findViewById(R.id.quant);
    rates[no]=(EditText)row[no].findViewById(R.id.rate);
    Log.d("detection", "Row is "+ no+ arg0.getId());
        }
    }
}

我创建了一个布尔数组,以了解最后一个 editText 是否创建了一个新的线性布局(监听了 onFocusChangeListener)。帮助!!!

4

1 回答 1

0

您需要扩展EditText该类,以便创建自己的类型,View其中可能希望有一个内部类,该类将实现View.OnFocusChangeListenerpublic方法,以便您可以使用新创建的类型的实例使用此内部类的实例设置侦听器。

于 2013-08-15T18:26:53.547 回答