0

ユーザーが表示できる動画のリストを作成しようとしています。これは動的である必要があります。これは、ビデオを描画しているデータベースに追加された新しいエントリに基づいてリストが更新されるためです。

私のプロジェクトでは、シンプルな API を介して vimeo からビデオのリストにアクセスします。すべての情報を表示するために私が使用している現在のアプローチは、StringBuilder オブジェクトである htmlString から情報を取得する webview オブジェクトを使用することです。

ビューの私の XML は次のとおりです。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<WebView
    android:id="@+id/videoMenu"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true" />

</RelativeLayout>

リストを動的に作成するために使用するコードのスニペットは次のとおりです。forループから作成されたhtmlでwebviewを表示する関数「onPostExecute(String result)」に戻ります。

    for (VideoDataParser.Entry video : videos)
    {
        htmlString.append("<p>");
        htmlString.append("<a href=\"" + video.url + "\">");
        htmlString.append("<img align=\"left\" src=\"" + video.thumbnail_url + "\">");
        htmlString.append(video.title + "<br>");
        htmlString.append(video.description);
        htmlString.append("</p>");

    }
    return htmlString.toString();

私が今抱えている主な問題は、画像が読み込まれないことです。これは、画像を取得するために別の HTTP リクエストが必要だからだと思います。それを修正する別の方法はありますか?

また、このメニューの作成方法が最適ではないのではないかと感じています。ユーザーがリンクをクリックすると、制御フローはアクティビティの外に出て、ビデオを再生する Web ブラウザーに移動します。オプションの 1 つをクリックすると、インターネットを使用する代わりに、アクティビティが自分のビデオ プレーヤーに移動するようにします。これを行うためのより良い方法がある可能性が最も高いですが、私にはわかりません。

どんな入力でも素晴らしいでしょう。

4

1 に答える 1

1

WebView を使用してプレイリストを作成している場合は、WebView 内で JavaScript インターフェイスを使用して、アクティビティと WebView の間で情報を送信できるようにすることをお勧めします。これにより、ユーザーがサムネイルをクリックしたときに、アクティビティの「id」を送信できます。ユーザーがクリックしたサムネイル。

チップ:

インターフェイスを追加するには、このようにします

WebView web = new WebView();
web.addJavascriptInterface(new classWhereTheMethodsAre(), "nameOfTheInterface");

HTML 内からメソッドを呼び出すには

nameOfTheInterface.nameOfTheMethod(Parameters);

このヒントがお役に立てば幸いです。別の質問がある場合は、ここに投稿してください。解決するか、スニペットを提供します。

アップデート:

画像が「インターネット」(HTTP など) から取得された場合は、通常のように URL を HTML コードに入れるか、(asynctask クラスを使用して) SD カードにダウンロードすることができます。次に、画像が完全にダウンロードされたときに通知するリスナーを用意して、画像を HTML ページに「挿入」するコードの部分を「遅延ロード」できるようにします。遅延読み込みは、リンクで提供されているコードで実現でき、それを呼び出すには、YourWebView.loadUrl("javascript:functionThatCallsTheLazyLoad(Parameters)")

この更新プログラムが問題の解決に役立つことを願っています。

于 2012-07-30T23:54:50.403 に答える