2011-11-24 15 views
5

To jest, co próbowałem wykonać zadanie, jeśli ktoś może pomóc, byłoby najbardziej cenione. W tym kodzie wyświetli się tylko strona tytułowa. Przeczytałem http://www.siegmann.nl/static/epublib/apidocs/, z którego można skorzystać pod numerem getSpine(), aby uzyskać wszystko, ale wyświetlana jest tylko jedna rzecz na moim przypadku, która jest stroną tytułową.Jak wyświetlić wszystkie strony i wszystkie rozdziały za pomocą nl.siegmann.epublib

webView = (WebView)findViewById(R.id.webView); 
webView.getSettings().setJavaScriptEnabled(true); 
AssetManager am = getAssets(); 
try { 
    InputStream epubInputStream = am.open(bookName); 
    book = (new EpubReader()).readEpub(epubInputStream); 
} catch (IOException e) { 
    Log.e("epublib", e.getMessage()); 
} 

Spine spine = book.getSpine(); 
for (SpineReference bookSection : spine.getSpineReferences()) { 
    Resource res = bookSection.getResource(); 

    try { 
     InputStream is = res.getInputStream(); 
     StringBuffer string = new StringBuffer(); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(is)); 

     try { 
      while ((line = reader.readLine()) != null) { 
       linez = string.append(line + "\n").toString(); 
      } 
     } catch (IOException e) {e.printStackTrace();} 

     //do something with stream 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

} 
webView.loadData(linez, "text/html", "utf-8"); 
+0

Naprawiłem problem, źle podniosłem moją odpowiedź, kiedy wróciłem do domu, ponieważ mam mniej niż 100 punktów rep. – wesdfgfgd

+0

Witam, czy możesz opublikować odpowiedź? Dzięki – TilalHusain

Odpowiedz

3

Więc co ja zorientowali się, używając kręgosłup na http://www.siegmann.nl/static/epublib/apidocs/ jest to, że nadal działa przez sekcje. Tak więc próbowałem ustalić, ile sekcji istnieje, identyfikując liczby zliczeń. Następnie umieściłem te numery w Resource res = spine.getResource(i);. Jeśli zrobiłbyś to Resource res = spine.getResource(2); Wyświetliłoby to grzbiet 2, który powinien być rozdziałem 2, chyba że ktoś zepsuje format epubu.

Spine spine = book.getSpine(); 
List<SpineReference> spineList = spine.getSpineReferences() ; 
int count = spineList.size(); 
tv.setText(Integer.toString(count)); 
StringBuilder string = new StringBuilder(); 
for (int i = 0; count > i; i++) { 
    Resource res = spine.getResource(i); 

    try { 
     InputStream is = res.getInputStream(); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(is)); 
     try { 
      while ((line = reader.readLine()) != null) { 
       linez = string.append(line + "\n").toString(); 
      } 

     } catch (IOException e) {e.printStackTrace();} 

     //do something with stream 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

} 
webView.loadData(linez, "text/html", "utf-8"); 
+0

'Resource res',' InputStream is', 'BufferedReader reader' powinien zostać zadeklarowany poza pętlą ... Poza tym unikaj używania wielu próbnych haczyków, chyba że naprawdę potrzebne ... – GAMA

+0

jak możemy zidentyfikować strony w łańcuchu? –

Powiązane problemy