Jump to content
vince123

Mettre dans un textview un contenu webview (HTML)

Recommended Posts

Bonjour à tous,

Je vais chercher sur un serveur du contenu HTML qui se présente sous une webview, comment faire pour l'avoir dans une textview (puisque j'ai déjà fait le squelette de mon API avec mes animations et tout :P)

Hors de question de changer mon squelette !

Merci d'avance ^^

Share this post


Link to post
Share on other sites

Et bien je pense que tu vas devoir gérer toi-même la connexion Http vers ton serveur, récupérer le HTML, le convertir en CharSequence et le mettre dans ta TextView.

Les pistes à suivre :

http://developer.android.com/intl/fr/reference/java/net/URLConnection.html (attention à la différence entre Uri, URI et URL)

http://developer.android.com/reference/java/net/URLConnection.html#getInputStream()

http://developer.android.com/reference/android/text/Html.html#fromHtml(java.lang.String)

Edited by Nivek

Share this post


Link to post
Share on other sites

ok merci bien, je vais voir ca lundi ^^

;)

edit : Pour ma requête je peux faire ça, non

          final String requete = SERVER_NAME + textView.getText();
                   Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(requete));
                   startActivity(intent);

Lorsque je fais ça, ca m'ouvre le browser avec ma page HTML, mais je ne veux pas de webview, donc pas de browser..

Edited by vince123

Share this post


Link to post
Share on other sites

Pour faire simple, mon activity contient un textview (titre) et un textview (contenu) :)

je peux changer le textview (contenu) en webview et ainsi y mettre du HTML, seulement, je n'arrive pas à récupérer mon HTML du serveur !

J'arrive à lancer une requête puis lancer un intent (qui ouvre le browser + affiche le HTML) mais comment juste "choper" le HTML et le "placer" dans mon webview.

Pour récupérer html.fromhtml ?? :mad: :(

Pour charger mon webview, ca me parait pas mal, non ? :

void loadData(String data, String mimeType, String encoding)

Load the given data into the WebView.

void loadDataWithBaseURL(String baseUrl, String data, String mimeType, String encoding, String historyUrl)

Load the given data into the WebView, use the provided URL as the base URL for the content.

Merci

Edited by vince123

Share this post


Link to post
Share on other sites

Je pourrais recoller tel quel mon post précédent vu que visiblement tu n'as pas suivi les pistes que j'ai données...

Donc, pour être plus précis :

Tu vas devoir gérer dans ton code la connexion vers le serveur HTTP. Pour cela, tu as besoin d'ouvrir une URLConnection :

http://developer.android.com/intl/fr/reference/java/net/URLConnection.html

Avec cette connexion ouverte vers ton serveur, tu récupères un InputStream que tu vas devoir lire pour récupérer le contenu de ta page HTML :

http://developer.android.com/reference/java/net/URLConnection.html#getInputStream()

Une fois ceci fait, tu peux convertir le HTML en CharSequence intégrable dans une TextView via cette méthode :

http://developer.android.com/reference/android/text/Html.html#fromHtml(java.lang.String)

Share this post


Link to post
Share on other sites

Au final tu peux te contenter d'une WebView ou pas ??? j'ai un peu de mal à comprendre.

Est-ce que c'est simplement que tu n'as pas vu dans la doc de la WebView qu'il fallait lui fournir l'URL comme ça :

webview.loadUrl("http://slashdot.org/");

?

Share this post


Link to post
Share on other sites

Bonjour Nivek,

Tu te trompes, ce n'est pas que je ne te suis pas..... mais j'ai un autre problème qui est survenu :mad: :

60640677.jpg

ET maintenant, je suis obligé de changer mon textView en webView, et la un problème survient, impossible à récupérer des évènement de click sur la webView, seulement sur ma TextView :

89883167.jpg

Ma Webview contient de l'HTML en local, j'ai essayé plein de chose pendant 2 jours, changer de layout, mettre mon listener sur un autre objet, incorporer ma scrollView dans une View, dans une autre ScrollView...etc :(

Je ne récupère plus mes clicks, je trouve rien sur la doc de la webView, c'est comme si, la webview était trop opaque pour laisser passer un évènement de click. :o :o

D'où l'importance de régler cela, avant de m'occuper à récupérer du HTML sur un serveur

Edited by vince123

Share this post


Link to post
Share on other sites

remplace ta WebView par un FrameLayout qui contient :

- en dessous ta WebView

- au dessus un LinearLayout transparent qui capte ton click

Share this post


Link to post
Share on other sites

Meme si j'ai une scrollview en parent du webview .... euh .....

en fait j'ai une FrameLayout (grand père ;) ) => scrollview => RelativeLayout => Textview et Webview (même niveau) décrit précédemment

Bref, je vais tester ca, à voir

merci Pierre

--------------------------------------------------------------------------------------------------------------------

edit : Eh non, ca ne marche pas et ca m'énerve la (3 jours dessus) à essayer de mettre des layout, des listeners un peu partout, voir ce que je récupère comme click, voir ce qui est zappé :o :o :o

Comment vas-je récupérer un click sur cette p.....ain de WebView !? si des personnes ont des idées, je suis preneur

Edited by vince123

Share this post


Link to post
Share on other sites

Bon, je vous tiens au courant,

J'ai réussi à récupérer mes clicks sur le webview, mais ne me demander pas pourquoi !

Maintenant let's go, récupération HTML pour le webview et mise en place parser + json pour récupérer un champ et le mettre dans un fils de mon ExpandableListView ! :) :)

Si vous avez des idées ou des exemples sur les parser, pensez à moi :P

go :rolleyes:

ps : merci de m'avoir bien guidé :| :|

Edited by vince123

Share this post


Link to post
Share on other sites

très simple à utiliser, il y a 2 type de méthodes :

- getXXX si tu veux récupérer un élément obligatoire (lève une exception si l'élément est introuvable)

- optXXX si l'élément est optionnel (une valeur par défaut doit être fournie)

Share this post


Link to post
Share on other sites

yes, merci bien ^^

As-tu vu des exemples de récupération de champ HTML grâce à un parser + json ?

Share this post


Link to post
Share on other sites

parser, en gros ca veut dire : scanné un HTML et sélectionné tel ou tel champs, non ?

json, me permet d'organiser mes objets, non ?

Share this post


Link to post
Share on other sites

html est basé sur xml (plus ou moins)

xml et json sont des formats d'échange de données, dont les syntaxes sont très différentes !

je vois donc mal ce que tu veux faire avec un parser json, et des données en html...

Share this post


Link to post
Share on other sites

j'ai du contenu HTML

j'ai une expandablelistview

Je dois mettre un certain champs dans un enfant de mon expandablelistview

Par conséquent, on m'a dit de scanné mon HTML avec un parser et d'utiliser json après (sans trop savoir pourquoi, mais je dois faire comme ca)

Share this post


Link to post
Share on other sites

ha ok !

donc tu ne va pas utiliser le mode "parser" de JSONObject !

c'est pour ça que je ne comprenait pas :P

donc en fait, tu vas créer un JSONObject vide, et le remplir avec des données "à la main", pour l'utiliser comme un stockage temporaire....

je ne vois pas trop l'interet, puisqu'une ArrayList/HashMap permet de faire la meme chose

sauf si t'as une structure en arbre...

à noter que tu peux aussi faire un toString sur JSONObject pour l'exporter !

Share this post


Link to post
Share on other sites

Rectification : je dois utiliser le parser de JSON !

Apparemment, je lui donne un string, me scanne mon flux et il me retourne ce que j'ai demandé !

pouah, j'ai jamais fait ca moi !

Share this post


Link to post
Share on other sites

je vais voir ce que j'ai dans mon HTML...et je reviens ^^

-----------------------------------------------------------------------------------------------------------------------

edit :

voila le genre de chose que j'ai :

{
"blok": false,
"msg_err": "",
"yyyyyyyy": [{"results": [
 {
  "ambiguite": false,
  "id_page": 0,
  "nb_pages": 0,
  "paragraph": [{
   "format": 4,
   "image": [],
   "text": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
  }],

je dois récupérer mon "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" (qui est l'enfant dans mon expandablelistview) et le mettre dans "yyyyyyyy" (qui est un parent dans mon expandablelistview)

Edited by vince123

Share this post


Link to post
Share on other sites

ok, c'est bien du JSON \o/

il te suffit de créer un JSONObject, en passant en paramètre une chaine de caractère contenant ton JSON

l'objet JSONObjet est accessible en :

- lecture avec getXXX et optXXX

- en écriture avec putXXX et remove

donc tu peux facilement faire ce que tu viens de me décrire

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.






×
×
  • Create New...