>source

안드로이드 개발에 익숙하지 않아 .txt 파일로 텍스트 뷰를 채우는 프로젝트를하고 있습니다. 여러 txt 파일에 동일한 textview를 사용하지만 문제는 해당 textview의 첫 번째, 세 번째 모든 텍스트를 표시한다는 것입니다. 이전 항목을 지우지 않습니다.

 MenuModel menuModel = new MenuModel("Introduction", true, false, "Intro.txt");
    headerList.add(menuModel);
    menuModel = new MenuModel("Tense", true, true, "");
    headerList.add(menuModel);
    List<MenuModel> childModelsList = new ArrayList<>();
    MenuModel childModel = new MenuModel("About Tense ", false, false, "TENSE.txt");
    childModelsList.add(childModel);
 if (menuModel.hasChildren) {
        childList.put(menuModel, childModelsList);
    }

여기서 확장 가능한 목록보기를 사용하고 있습니다.      private void populateExpandableList () {

   expandableListAdapter = new ExpandableListAdapter(this, headerList, childList);
    expandableListView.setAdapter(expandableListAdapter);
    expandableListView.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {
        @Override
        public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) {
            if (headerList.get(groupPosition).isGroup) {
                if (!headerList.get(groupPosition).hasChildren) {

setFile은 열 텍스트 문서를 선택합니다

                   String setFile = headerList.get(groupPosition).url;
                    BufferedReader reader = null;
                    try {
                        reader = new BufferedReader(
                                new InputStreamReader(getAssets().open(setFile)));
                        String mLine;
                        while ((mLine = reader.readLine()) != null) {
                            text.append(mLine);
                            text.append('\n');
                        }
                    } catch (IOException e) {
                        Toast.makeText(getApplicationContext(),"Error reading file!",Toast.LENGTH_LONG).show();
                        e.printStackTrace();
                    } finally {
                        if (reader != null) {
                            try {
                                reader.close();
                            } catch (IOException e) {
                                //log the exception
                            }
                        }
                        TextView txtView = findViewById(R.id.tvContent);
                        txtView.clearComposingText();
                        txtView.setMovementMethod(new ScrollingMovementMethod());
                        txtView.setText(text);

                    }
                    onBackPressed();
                }
            }
            return false;
        }
    });
    expandableListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
        @Override
        public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
            if (childList.get(headerList.get(groupPosition)) != null) {
                MenuModel model = childList.get(headerList.get(groupPosition)).get(childPosition);
                if (model.url.length() > 0) {

setFile은 열 텍스트 문서를 선택합니다

                   String setFile = model.url;
                    BufferedReader reader = null;
                    try {
                        reader = new BufferedReader(
                                new InputStreamReader(getAssets().open(setFile)));

                        String mLine;
                        while ((mLine = reader.readLine()) != null) {
                            text.append(mLine);
                            text.append('\n');
                        }
                    } catch (IOException e) {
                        Toast.makeText(getApplicationContext(),"Error reading file!",Toast.LENGTH_LONG).show();
                        e.printStackTrace();
                    } finally {
                        if (reader != null) {
                            try {
                                reader.close();
                            } catch (IOException e) {
                                //log the exception
                            }
                        }
                        TextView txtView = findViewById(R.id.tvContent);
                        txtView.clearComposingText();
                        txtView.setMovementMethod(new ScrollingMovementMethod());
                        txtView.setText(text);
                    }
                    onBackPressed();
                }
            }
            return false;
        }
    });
}


  • 답변 # 1

    text 변수  파일의 줄을 저장하는 데 사용하는 것은 분명히 StringBuilder 입니다.  객체 아닌가요?
    파일에서 읽은 후에 각 행을 추가하고 읽은 후에 TextView 를 설정하십시오. StringBuilder 의 텍스트에 텍스트 .
    그러나 라인을 읽고 StringBuilder 에 추가하기 전에  이전 텍스트를 지워야합니다

    text = new StringBuilder();
    
    

    또는

    text.setLength(0);
    
    

    따라서 while 앞에 위의 행 중 하나를 넣으십시오.  루프.

  • 이전 c++ - 소스를 빌드하기 전에 cmake를 사용하여 일부 라이브러리가 있는지 확인하는 방법은 무엇입니까?
  • 다음 android - 동일한 방법으로 두 개의 트랜잭션을 실행하면 Realm이 이미 쓰기 트랜잭션에 있습니다