Android 逐行读取文本文件并与editText中的getText进行比较的转换器

Android 逐行读取文本文件并与editText中的getText进行比较的转换器,android,file-io,android-edittext,Android,File Io,Android Edittext,我对应用程序开发非常感兴趣。但我两个月前才开始工作,所以我没有经验。。。。我试着为自己制作一个翻译应用程序。我有一个用于输入的EditText和用于输出的TextView。其思想是从EditText中读取,在文本文档中逐行搜索行号,如 例如: 苹果-阿菲尔 汽车 然后找到单词并将翻译后的单词带到textView 例如: 编辑文字是:苹果 找到的单词Textview是:Apfel 如果单词未找到,则生成TextView错误消息 我有一个想法,为空文本创建一个警报对话框 “eingabe”是Edit

我对应用程序开发非常感兴趣。但我两个月前才开始工作,所以我没有经验。。。。我试着为自己制作一个翻译应用程序。我有一个用于输入的EditText和用于输出的TextView。其思想是从EditText中读取,在文本文档中逐行搜索行号,如 例如:

  • 苹果-阿菲尔
  • 汽车
  • 然后找到单词并将翻译后的单词带到textView 例如:

    编辑文字是:苹果 找到的单词Textview是:Apfel

    如果单词未找到,则生成TextView错误消息

    我有一个想法,为空文本创建一个警报对话框 “eingabe”是EditText中的文本值 所以我想做的是,该方法查看EditText并从那里获取文本。当字段为空时,将以AlertDialog的形式显示一条错误消息。如果该字段不为空,则该方法获取该值并将其与保存在“我的资源”文件夹中的“我的词典”进行比较。这就是为什么o需要一个输入流和一个阅读器!但是我不知道如何为代码编写正确的语法

    这是我完整的方法 eingabe的意思是编辑文本

    public void sucheErgebnis() throws IOException{
    
    
        final Context context = DeutschActivity.this;
        final String str;
        final String eingabe = txtEingabe.getText().toString();
        StringBuffer buf = new StringBuffer();
        InputStream is = this.getResources().getAssets().open("dictionary.rtf");
        BufferedReader reader = new BufferedReader(new InputStreamReader(is));
    
        btnSuch = (Button)findViewById(R.id.btnSuch);
        btnSuch.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
    
                if(Objects.equals(eingabe, "")){
    
                    new AlertDialog.Builder(context)
                            .setTitle("Dikkat")
                            .setMessage("Arama alani bos kalamaz!")
                            .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog, int which) {
    
                                    txtEingabe.setSelection(0);
    
                                }
                            })
                            .setIcon(android.R.drawable.ic_dialog_alert).show();
    
                }
                else{
    
    
    
                }
    
    
    
            }
        });
    
    }
    

    我已经编写了这段代码,它将通读存储在asset文件夹中的文件(如您提到的格式),并返回翻译后的单词:

    public class MainActivity extends AppCompatActivity {
    EditText txtEingabe;
    Button  btnSuch;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        txtEingabe = (EditText)findViewById(R.id.txtEingabe);
        btnSuch = (Button)findViewById(R.id.btnSuch);
        try {
            sucheErgebnis();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public void sucheErgebnis() throws IOException {
    
    
        final Context context = MainActivity.this;
        final String str;
        StringBuffer buf = new StringBuffer();
        btnSuch.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String eingabe = txtEingabe.getText().toString().trim();
                if(eingabe.equals("")){
    
                    new AlertDialog.Builder(context)
                            .setTitle("Dikkat")
                            .setMessage("Arama alani bos kalamaz!")
                            .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog, int which) {
    
                                    txtEingabe.setSelection(0);
    
                                }
                            })
                            .setIcon(android.R.drawable.ic_dialog_alert).show();
    
                }
                else{
                    String translatedWord = FileReaderFromAssets.read(context, eingabe);
                    if(!translatedWord.equals("")){
                       txtEingabe.setText(translatedWord);
                     }
                     else{
                        // write your code here if that word not present in the rtf file
                     }
    
                }
    
    
    
                }
    
        });
    
    }
    
    以下是搜索文件并返回匹配词“”的方法,如果未找到匹配项:

    public class FileReaderFromAssets {
    
        public static String read(Context context, String word){
           String translatedWord = "";
           BufferedReader reader = null;
            try {
                String[] line;
                reader = new BufferedReader(
                    new InputStreamReader(context.getAssets().open("dictionary.rtf"))); 
    
            // do reading, usually loop until end of file reading
            String mLine;
            while ((mLine = reader.readLine()) != null) {
                line = mLine.split("-");
                String temp= line[0].trim();
                if(temp.equalsIgnoreCase(word.trim())){
                    translatedWord = line[1].trim();
                    break;
                }
            }
            return translatedWord;
    
        } catch (Exception e) {
    
            return translatedWord;
        }
    
        finally{
    
            try{
    
                reader.close();
    
            }catch(IOException ex){
    
            }
    
        }
    
      }
    }
    

    首先,非常感谢。代码运行得很好,但我不明白当字典中不存在单词时,错误反馈放在哪里。rtfis读取器关闭后的最后一次尝试捕获中出现“如果”是否正确?@bunkar我已经更新了代码。试试看,希望能解决这个问题。再次感谢你。你救了我一个晚上。现在我可以实现我的列表了。我只在else语句txtergebnis.setText(“找不到单词”)中编写代码;