EditText Android:将颜色设置为双引号中的文本

时间:2015-12-23 14:45:58

标签: android android-edittext

我想用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行,那么我的应用程序根本没有响应。

有没有更好的方法来执行此功能。

1 个答案:

答案 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);