Enterボタンを押したときにEditTextにシーケンス番号を生成したい。
詳細説明 :
edittext で初めて文字を書きたい場合は、常にこの文字列 --> "1" で開始する必要があります。
そして、文を書き終えてエンターボタン(改行)を押すと、次の文は次のシーケンス番号で始まるはずです
例:このように初めてedittextに書き込むとき
これは最初の文です
、それはこのようにする必要があります
1.) これは最初の文です
そして、Enterボタンを押して次の文をこのように書くと
これは2番目の文です
このようにする必要があります
2.) これは 2 番目の文です
コードを書き込もうとしましたが、EditText の最初の文字を書き込もうとしたときに予期しない結果が発生しました
これが私のコード全体です:
public class MainActivity extends Activity {
private EditText mET;
public int getCurrentCursorLine(EditText editText)
{
int selectionStart = Selection.getSelectionStart(editText.getText());
Layout layout = editText.getLayout();
if (!(selectionStart == -1)) {
return layout.getLineForOffset(selectionStart);
}
return -1;
}
private final TextWatcher mTextEditorWatcher = new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
mET.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
int startCursor = 0;
startCursor = mET.getSelectionStart();
if (keyCode == KeyEvent.KEYCODE_ENTER || keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
mET.getText().insert(startCursor, "\n" + String.valueOf(getCurrentCursorLine(mET)+2) + ".) ");
return true;
}
return false;
}
});
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mET = (EditText) findViewById(R.id.mEditText);
Editable text = mET.getText();
text.insert(mET.getSelectionStart(), "1.) ");
mET.addTextChangedListener(mTextEditorWatcher);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
それが私のコード全体です.
上記のコードを使用すると、結果は次のようになりました:
1.) これは最初の文です
2.)
3.) これは 2 番目の文です
4.)
5.) これは 3 番目の文です
問題は、なぜ 2 回実行されたのかということです。
そして、たとえば2行目にEnterボタンを押して新しい行を挿入すると、結果は次のようになりました。
1.) これは最初の文です
2.) これは 2 番目の文です
3.)
4.)
3.) これは 2 番目の文です
4.)
5.) これは 3 番目の文です
ランダムな行に新しい行を挿入したときに整数を更新したい。
今、私はそれを修正するためにあなたの助けが必要です.
ありがとう!