gpt4 book ai didi

android - 使用 TextWatcher 监听器显示已编辑的文本

转载 作者:行者123 更新时间:2023-11-29 21:48:58 25 4
gpt4 key购买 nike

我是 Android 开发的新手(我正在上课),请多多包涵。

我必须使用 TextWatcher 将编辑后的文本从 EditText 小部件显示到 TextView 小部件中。

例如,如果最初输入的内容被编辑(比如用户输入“Hoozledoofer”,然后突出显示“zledoof”,最后在其位置输入“v”),我必须首先以格式输出更改:

'zledoof' => 'v'

这显示在 TextView 的第一行。然后,第二行将显示现在存在于 EditText 小部件中的完整文本:

Hoover

我不知道该怎么做。我知道我需要在 afterTextChanged 方法中输出结果。如何保存已完成的内容,并继续输出输入的内容?有什么建议吗?

下面是类里面给出的 TextWatcher 示例:

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

txtEdit = (EditText) findViewById(R.id.editText1);
viewText = (TextView) findViewById(R.id.text);

txtEdit.addTextChangedListener (new TextWatcher() {

public void beforeTextChanged(CharSequence s, int start, int count, int after) {
Log.i("TC", "beforeTC " + s.toString() + " "
+ s.subSequence(start, start + count).toString());
}

public void onTextChanged(CharSequence s, int start, int before, int count) {
Log.i("TC", "onTC " + s.toString() + " "
+ s.subSequence(start, start + count).toString());
}

public void afterTextChanged(Editable s) {
Log.i("TC", "afterTC " + s.toString());
}
});
}

这是我尝试过的方法,它提供了预期的最终结果,但它确实会继续显示所做的每一个小编辑。这可能不是问题,可能对教授有用:

     txtEdit.addTextChangedListener (new TextWatcher() {

String changed, newStr, edit;

public void beforeTextChanged(CharSequence s, int start, int count, int after) {
changed = s.subSequence(start, start + count).toString();

//Log.i("TC", "beforeTC " + s.toString() + " "
//+ s.subSequence(start, start + count).toString());
}

public void onTextChanged(CharSequence s, int start, int before, int count) {
newStr = s.toString();
edit = s.subSequence(start, start + count).toString();

//Log.i("TC", "onTC " + s.toString() + " "
//+ s.subSequence(start, start + count).toString());
}

public void afterTextChanged(Editable s) {
viewText.setText(changed + " => " + edit + "\n" + newStr);

//Log.i("TC", "afterTC " + s.toString());

}
});

最佳答案

因为这是作业,所以我不会给你答案。 (你的老师通过给你一个很好的例子开始做了很多繁忙的工作。)但我会给你一个提示:

For example, if what was initially typed is edited (like if the user typed "Hoozledoofer" and then highlighted "zledoof" and finally typed "v" in its place), I would have to output the change first in the format: 'zledoof' => 'v' This is shown on the first line of the TextView.

注意beforeafter相对于count。这将帮助您了解用户何时添加或删除文本。

第二部分很简单,你似乎已经有了答案:

Then, the second line would show the full text now present in the EditText widget: Hoover
I know I need to output the results in the afterTextChanged method.

关于android - 使用 TextWatcher 监听器显示已编辑的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14961579/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com