2011-11-24 6 views
5

'u kullanarak tüm sayfaları ve tüm bölümleri nasıl görüntüleyebilirim Bu, herhangi bir kişinin yardımcı olabileceği bir şey varsa bunu yapmaya çalıştım. Yani bu kodda sadece kapak sayfasını gösterecektir. Ben her şeyi almak için getSpine() kullanabilirsiniz http://www.siegmann.nl/static/epublib/apidocs/ okudum ama kapak sayfası olan benim durumumda sadece bir şey görüntülenir. Ben http://www.siegmann.nl/static/epublib/apidocs/ üzerinde omurgayı kullanarak anladım Pekinl.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

Problemi çözdüm, eve döndüğümde cevabımı koyduğumda 100 puandan azım var. – wesdfgfgd

+0

Merhaba, Cevabı gönderir misiniz? – TilalHusain

cevap

3

hala bölümlerde tarafından çalışmasıdır. Böylece sayım rakamlarını tespit ederek kaç bölümün olduğunu anlamaya çalıştım. Sonra bu numaraları Resource res = spine.getResource(i);'a yerleştirin. Eğer Resource res = spine.getResource(2); yapacak olursanız, birisi epubun formatını bozmadığı sürece 2. bölüm olması gereken omurganızı gösterecektir.

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' döngüsünün dışında bildirilmelidir ... Ayrıca, gerçekten gerekmedikçe sayısız try-catch kullanmaktan kaçının .... – GAMA

+0

Bir dizide sayfaları nasıl tanımlayabiliriz? –