2016-11-18 4 views
0

Wie kann ich nur einen Teil einer Website in einem Android WebView anzeigen?Wie kann ich nur einen Teil einer Website in einem Android WebView anzeigen?

Der HTML-Code für diese Website enthält einen Head-Block, und einen Körper-Block angezeigt werden soll, die hauptsächlich aus einer Tabelle wie folgt für jede Zeile der Tabelle gestylt vorhanden:

<table class="VBlock"> 
<tr class="normal"> 
<th class="VBlock">Class</th> 
<th class="VBlock">Lesson</th> 
<th class="VBlock">Subject</th> 
<th class="VBlock">represented by</th> 
<th class="VBlock">Subject</th> 
<th class="VBlock">Room</th> 
<th class="VBlock">Notes</th> 
</tr> 

... 

</table> 

Nun, in dem WebView nur bestimmte Tabellenzeilen sollten angezeigt werden. (: Die Worte in den Spalten sind nicht endgültig, nur imaginär HINWEIS)

<th class="VBlock">Class</th> 

durch den Vergleich zu einer Arraylist Dies sollte auf dem Inhalt der Tabellenspalte abhängig sein.

Ich habe gerade den folgenden Code geschrieben, die ich teilweise das Suchen im Internet gefunden:

public void getWData(){ 
    final WebView webView1 = (WebView) findViewById(R.id.webView1); 
    webView1.getSettings().setJavaScriptEnabled(true); 
    webView1.getSettings().setBuiltInZoomControls(true); 
    webView1.setWebViewClient(new WebViewClient(){ 
     @Override 
     public void onPageFinished(WebView view, String url) { 
      webView1.loadUrl(""); 
     } 

    }); 
    webView1.loadUrl(url); 

Ich glaube, ich habe etwas in den params der „webView1.loadUrl (“ „)“ in die schreiben onPageFinished - aber ich bin mir nicht sicher.

Vielen Dank im Voraus für Ihre Hilfe

+0

Sie haben einige Werte in Ihrer ArrayList, und Sie möchten nur die entsprechenden Werte in der Tabelle erhalten, oder? –

+0

Ja, genau das möchte ich. – tb8801

Antwort

1

Angenommen, Sie eine Arraylist haben, dass einige Werte in sich hat;

List<String> list; 

Sie müssen eine komplexe Javascript-Funktion generieren und diese hier ausführen. Zuerst müssen Sie Ihre Arraylist in Java-Script-Liste im String-Format konvertieren, wie folgt:

String listStr = "["; 
for(int i=0; i<list.size(); i++){ 
    listStr += list.get(i); 
    if(i!=list.size()-1) 
     listStr += ","; 
} 
listStr += "]"; 

Bis Ende dieses Codeteil haben Sie die Liste im String-Format bereit, in Javascript verwenden. Nun müssen Sie die loadURL in onPageFinished wie folgt ändern:

String func = "javascript:(function() { " + 
    "var arrayList = " + listStr + ";" + 
    "var tableRows = document.getElementsByTagName('th');" 
    "for(var j=0; j<tableRows.length; j++){"+ 
    "tableRows[j].style.visibility = 'hidden';"+ 
    "};"+ 
    "for(var i=0; i<arrayList.length; i++){"+ 
     "for(var j=0; j<tableRows.length; j++){"+ 
      "if(tableRows[j].innerHTML != arrayList[i]){"+ 
       "tableRows[j].style.visibility = 'visible';"+ 
      "}"+ 
     "}"+ 
    "}"+ 
"})()"; 

Dann können Sie diese Javascript-Funktion ausführen wie folgt:

webView1.loadUrl(func); 

Grundsätzlich ist diese JavaScipt Funktion blendet alle Tabellenzeilen auf den ersten. Iteriert dann über Ihr Array und macht die übereinstimmenden sichtbar.

0

Sie könnten Jsoup verwenden möchten. Da Sie keinen vollständigen HTML-Code bereitstellen, kann ich Ihnen das Beispiel nicht zeigen.

Ich kann Ihnen nur die Tür zeigen. Du bist diejenige, die hindurchgehen muss. :)

Hoffe es hilft.

Verwandte Themen