我想在按下Enter按鈕時在EditText中生成序列號。
詳細說明:
每次我想在edittext中首次寫一個字符時,應該以這個字符串開始 - >「1」。
後,我完成寫了一句,然後按回車鍵(新行),下一句應該用一個序列號在Edittext中生成序列號Android
例如開始: 當我的EditText寫的第一次像這樣
這是第一句話
,它應該是這樣的
1),這是第一句話
,然後當我按下ENTER鍵寫入下一個句子是這樣
這是第二個句子
應該像此
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.)噸他是第二句
4)
5)這是第三個句子
的問題是,它爲什麼被執行兩次?
而且,當我按下輸入按鈕插入在例如第2行一個新行,結果變成這樣:
1)這是第一個句子
2)這是所述第二句子
3.)
4.)
3)這是第二個句子
4.)
5。)這是第三句
我想在隨機行中插入新行時更新整個數字。
現在我需要你的幫助來解決它。
謝謝!
感謝您的回答。我試過了你的建議,但沒有奏效。 '\ n'是需要的,因爲當我按下'enter'鍵時,startCursor不在新行中。所以,如果我們刪除'\ n',該行仍然執行兩次,但沒有新行。 – 2013-02-26 08:03:59