我想用edittext中的蓝色双引号中的文字突出显示。
我已完成如下所示。
//reading file
BufferedReader br = new BufferedReader(new FileReader(file1));
while ((line = br.readLine()) != null) {
for(char c : line.toCharArray()) {
edittext.append(check(c));
//check is a function which checks whether a double quote is present, if so it will set blue using Spannable utli it found next double quote.
}
}
现在我的问题是如果我的文件中有50行,那么我的应用程序根本没有响应。
有没有更好的方法来执行此功能。
答案 0 :(得分:0)
添加此课程:
public class SetColorForEditTExt extends AsyncTask<Void, CharSequence, Void>{
String fileName;
EditText edittext;
public SetColorForEditTExt(String fileName, EditText edittext) {
this.fileName = fileName;
this.edittext = edittext;
}
@Override
protected Void doInBackground(Void... voids) {
String line = "";
try {
BufferedReader br = new BufferedReader(new FileReader(fileName));
while ((line = br.readLine()) != null) {
for (char c : line.toCharArray()) {
onProgressUpdate(check(c));
//check is a function which checks whether a double quote is present, if so it will set blue using Spannable utli it found next double quote.
}
}
}catch (IOException e){
e.printStackTrace();
}
return null;
}
@Override
protected void onProgressUpdate(CharSequence... values) {
if(values == null || values.length == 0){
return;
}
CharSequence result = values[0];
if(edittext != null) {
edittext.append(result);
}
}
private CharSequence check(char c){
//do something
}
}
然后在需要时使用它:
new SetColorForEditTExt(file1, edittext).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);