1

私が持っているもの

行が動的に追加されるテーブル レイアウトを作成しました。列として 2 つの editTexts があります。

私が欲しいもの

  • 表の行の 2 番目の editText がフォーカスされ、Enter キーが押された場合:
    1. 下に表の行が存在する場合、フォーカスはその edittext に設定する必要があります。
    2. 下にテーブル行が存在しない場合は、テーブル行を追加してからフォーカスを設定する必要があります。

次のようなものが必要だと思います:

If(tablerow exists below){
  //do the focusing
}
else{
  //add new row
  //do the focusing
}

関数addViewを使用して行を追加しました。

public void addView(Context context) {

    int dpConv = (int) getResources().getDisplayMetrics().density;

    i = i + 1;
    try {

        txt_itemName[i] = new EditText(context);
        txt_itemName[i].setText("itName");
        txt_itemName[i].requestFocus();


        txt_qty[i] = new EditText(context);
        txt_qty[i].setInputType(InputType.TYPE_TEXT_FLAG_CAP_WORDS);
        txt_qty[i].setImeOptions(EditorInfo.IME_ACTION_NEXT);
        txt_qty[i].setOnEditorActionListener(new OnEditorActionListener() {

                public boolean onEditorAction(TextView v, int actionId, KeyEvent event)                                            

        {

                        if(actionId == EditorInfo.IME_ACTION_NEXT){

                                txt_qty[i].clearFocus();

                                //Need to check conditions here
                        }

        return false;
        }
        });

        tb_row[i] = new TableRow(context);
        tb_row[i].addView(txt_itemName[i]);
        tb_row[i].addView(txt_qty[i]);

        tb_lyt.addView(tb_row[i]);
4

1 に答える 1

0

Ok。これを試してみたらどうですか:

if(actionId == EditorInfo.IME_ACTION_NEXT){

    txt_qty[i].clearFocus();

    //Need to check conditions here
    /* I'm assuming that:
          You have the value of i
          You add TableRows ONLY to your TableLayout
    */
    if(tb_lyt.getChildCount() > (i+1)) {
        //If a child exist below
        //Do your focus setting
    }
    else {
        //Add a new Row.
    }
 }
于 2012-08-30T06:19:49.477 に答える