안드로이드 개발 질문/답변
(글 수 45,052)
txt파일을 읽어 들여서 한화면이든 몇줄이든 정해놓은 범위로 화면을 이동시킬수 있는 방법있나요??
음 만약에 소설책 한권짜리를 넣었으면 한화면에 100줄정도 보이고 다음버튼 누르면 그다음 줄부터 보이게 한다든지
하는 방법이요...
아시는분 혹시 계신가요???
음 만약에 소설책 한권짜리를 넣었으면 한화면에 100줄정도 보이고 다음버튼 누르면 그다음 줄부터 보이게 한다든지
하는 방법이요...
아시는분 혹시 계신가요???
2010.08.25 11:18:24
음.. 제가아직 자바 지식이 부족해서.. 그럼
File file = new File(path);
//Toast.makeText(this, filepath[position], Toast.LENGTH_SHORT).show();
StringBuilder text = new StringBuilder();
try{
//BufferedReader br = new BufferedReader(new FileReader(file));
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "euc-kr"));
String line;
while((line = br.readLine()) != null) {
text.append(line);
text.append('\n');
}
}catch(IOException e){
}
final TextView tv = (TextView)findViewById(R.id.text);
tv.setText(text);
이렇게해서 텍스트파일을 읽어서 텍스트뷰에 뿌리고있는데...
어떻게 구현해야될까요....????
감이안오네요..
2010.08.25 15:38:58
while 문 앞에 이렇게 두시고 처리를 하세요..
int i = 1;
while((line = br.readLine()) != null) {
text.append(line);
text.append('\n');
if(i == 100) break;
i++
}
요러면 100줄만 읽게 됩니다..
그리고 여기서 보완해야 할 코드가 있어요..
다음 페이지에서는 101줄부터 읽어야 하자너요..
그렇기땜에 1~100줄까정 skip해야 하는 코드도 같이 들어가야 합니다..
그래서 이런식의 코드가 while 문 앞에 들어가야 하는거죠..
int startcnt = (page-1) * 100 + 1
for(int i=startcnt,end=startcnt+100; i < end; i++){
String skipline= br.readLine();
}
page 변수에서는 현재 읽는 페이지 번호 값이 들어가야 하는거구요..
이 페이지 변수는 이전, 다음 버튼 클릭했을때 현재 페이지 기준으로 이전 페이지 값이나 다음 페이지 값이 들어가도록 해야 합니다..
다만 프로그램이 처음 로딩될때는 이전버튼이나 다음 버튼이 클릭되는 이벤트 자체가 없는 상황이기땜에 default로 1로 설정해야 합니다..
int i = 1;
while((line = br.readLine()) != null) {
text.append(line);
text.append('\n');
if(i == 100) break;
i++
}
요러면 100줄만 읽게 됩니다..
그리고 여기서 보완해야 할 코드가 있어요..
다음 페이지에서는 101줄부터 읽어야 하자너요..
그렇기땜에 1~100줄까정 skip해야 하는 코드도 같이 들어가야 합니다..
그래서 이런식의 코드가 while 문 앞에 들어가야 하는거죠..
int startcnt = (page-1) * 100 + 1
for(int i=startcnt,end=startcnt+100; i < end; i++){
String skipline= br.readLine();
}
page 변수에서는 현재 읽는 페이지 번호 값이 들어가야 하는거구요..
이 페이지 변수는 이전, 다음 버튼 클릭했을때 현재 페이지 기준으로 이전 페이지 값이나 다음 페이지 값이 들어가도록 해야 합니다..
다만 프로그램이 처음 로딩될때는 이전버튼이나 다음 버튼이 클릭되는 이벤트 자체가 없는 상황이기땜에 default로 1로 설정해야 합니다..
화면에 100줄이 보이는게 아니라 텍스트 파일 100줄의 개념으로 이해하고 설명을 드리자면..
화면이 로딩될때는 읽어들이기 시작하는 시작줄은 (page번호-1) * 100 + 1로 해서 나온 시작줄수부터
한줄씩 파일을 읽어들이는거죠..
파일을 읽어들일때 줄 수를 세어가며 읽고..
줄수가 100이 되거나 또는 100이 되기 전에 파일 끝까지 도달하게 되면 읽는 작업을 중지한뒤 파일을 닫고..
화면에 보여주는 것이죠..
그리고 다음 버튼을 클릭할때는 현재 페이지 번호 + 1 값을 넘겨주면 위에서 언급한 공식으로 읽어들일 시작줄을 다시 계산해서 읽어들이게 됩니다..
이론적인 설명은 이렇게 되네요..