Cześć, analizuję xml, a następnie ładuję go do widoku sieci Web, po przeanalizowaniu tworzę cztery ciągi, aby móc dołączyć wszystkie ciągi do jednego widoku. Jestem w stanie uzyskać dwa widoki w widoku sieci Web, ale nie dwa pierwsze ciągi znaków.
Pls zasugeruj mi z moim kodem, gdzie popełniam błąd i jaki jest prawidłowy sposób uzyskania sformatowanych ciągów HTML w widoku sieci Web. Proszę spojrzeć na mój kod i pomóc mi rozwiązać ten problem.
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
String chapterTitle = "";
String SubChapterTitle="";
String chapterIntro ="";
String chapterContent="";
View view = convertView;
if (convertView == null) {
// view = inflater.inflate(resourceid, null);
view = getLayoutInflater().inflate(R.layout.webviewitem, null);
}
synchronized (view) {
WebView wv = (WebView) view.findViewById(R.id.contentWebView);
WebSettings settings = wv.getSettings();
settings.setUseWideViewPort(true);
settings.setLoadWithOverviewMode(true);
settings.setJavaScriptEnabled(true);
settings.setDefaultZoom(ZoomDensity.FAR);
// wv.setBackgroundColor(0);
wv.setVerticalScrollBarEnabled(false);
wv.setHorizontalScrollBarEnabled(false);
/*String txtChapTitle = Intro.book.getsecretList().get(position)
.getChtitle().toString();*/
if (!(Intro.book.getsecretList().get(position).getChtitle()
.toString().equals(""))){
chapterTitle = "<b><fontSize=4>"+Intro.book.getsecretList().get(position)
.getChtitle().toString()+"</font></b>";
}
if (!(Intro.book.getsecretList().get(position)
.getSubtitle() == null)) {
SubChapterTitle = "<b><fontSize=4>"+Intro.book.getsecretList().get(position)
.getSubtitle().toString()+"</font></b>";
}
if (!(Intro.book.getsecretList().get(position)
.getIntro() == null)) {
chapterIntro = "<b><fontSize=2>"+Intro.book.getsecretList().get(position)
.getIntro().toString()+"</font></b>";
}
if (!(Intro.book.getsecretList().get(position)
.getContent() == null)) {
chapterContent = "<fontSize=2>"+Intro.book.getsecretList().get(position)
.getContent().toString()+"</font>";
}
StringBuilder content = new StringBuilder();
content.append(chapterTitle+SubChapterTitle+chapterIntro+chapterContent);
JsInterface Jsi = new JsInterface();
Jsi.wordDef = content ;
Log.v("Content", "" +content);
wv.addJavascriptInterface(Jsi, "interfaces");
wv.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
view.setHapticFeedbackEnabled(false);
}
});
wv.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onJsAlert(WebView view, String url,
String message, JsResult result) {
return super.onJsAlert(view, url, message, result);
}
});
wv.loadUrl("file:///android_asset/wordview.html");
}
return view;
}
}
Jestem w stanie uzyskać treść ChapterIntro i Chaptercontent w widoku sieciowym, ale nie pierwsze dwa ciągi znaków, proszę, pomóżcie mi przyjaciele.
Aby załadować dane w WebView. Wywołaj metodę loadData () WebView
Możesz sprawdzić ten przykład
http://developer.android.com/reference/android/webkit/WebView.html
źródło
webView.loadData(yourData, "text/html; charset=utf-8", "UTF-8");
Podanie wartości null byłoby lepsze. Pełne kody to:
źródło
Ładowanie normalnych danych nie działało dla mnie, konwersja do Base64 działała dobrze.
Znajdź szczegółowe informacje na temat WebView
źródło