2012-07-30 6 views
0

사용자가 볼 수있는 비디오 목록을 만들려고합니다. 목록을 데이터베이스에 추가 할 새 항목을 기반으로 업데이트 할 예정이기 때문에 동적이어야합니다. 비디오를 그리는 중입니다.프로그래밍 방식으로 비디오 목록 만들기

내 프로젝트의 경우 간단한 API를 통해 vimeo의 비디오 목록에 액세스합니다. 모든 정보를 표시하는 데 사용하는 현재 접근 방식은 StringBuilder 객체 인 htmlString에서 정보를 가져 오는 webview 객체를 통해 수행됩니다.

<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> 

내 목록을 구축하는 데 사용할 코드의 조각 동적으로 다음과 같다 : 뷰에 대한

내 XML은 다음과 같다. forPostExecute (String result) 함수로 돌아가서 for 루프에서 생성 된 HTML로 웹 뷰를 표시합니다.

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 요청이 필요하기 때문입니다. 그 문제를 해결할 다른 방법이 있습니까?

또한이 방법으로 메뉴를 만드는 것이 좋지 않을 수도 있습니다. 사용자가 링크를 클릭하면 제어 흐름이 내 활동 범위를 벗어나 동영상을 재생할 웹 브라우저로 이동합니다. 내 옵션 중 하나를 클릭 할 때 인터넷을 사용하는 대신 내 활동을 내 비디오 플레이어로 이동하고 싶습니다. 이 작업을 수행하는 가장 좋은 방법이있을 수 있지만 확실하지 않습니다.

모든 입력 사항이 우수합니다.

답변

1

WebView를 사용하여 재생 목록을 만드는 경우 WebView에서 JavaScript 인터페이스를 사용하여 활동과 WebView간에 정보를 전송할 것을 권장하므로 사용자가 미리보기 이미지를 클릭하면 활동을 보낼 수 있습니다. 사용자가 클릭 한 썸네일의 "id"

팁 :

당신이 그것을

nameOfTheInterface.nameOfTheMethod(Parameters); 

나는이 팁이 도움이 될 수 있습니다 희망

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

는 HTML 내부에서 메소드를 호출하려면이 방법을 수행하는 인터페이스를 추가하려면 너, 다른 질문이 있으면 여기에 게시해라. 그러면 나는 그것을 해결하려고 노력할 것이다. nippet.

UPDATE : 당신이 일반적으로 그렇게 할 것 같은

이미지가 "인터넷"에서 오는 경우는 (HTTP 또는 같은), 당신은 단지 HTML 코드에서 URL을 넣을 수 있습니다, 또는 당신이 할 수있는 SD 카드 (asynctask 클래스)로 다운로드 한 다음 이미지가 완전히 다운로드 될 때 알려주는 청취자가있어 "lazy load" 코드 부분에서 이미지를 HTML 페이지에 "삽입"할 수 있습니다. 링크에 제공된 코드로 게으른로드를 수행하고 수행 할 수 있습니다. YourWebView.loadUrl("javascript:functionThatCallsTheLazyLoad(Parameters)")

이 업데이트가 문제를 해결할 수 있기를 바랍니다.

+0

감사합니다. 도움이됩니다! 나는 이것을 게시 한 후에 상당히 광범위하게이 접근법을 조사 해왔다. 다른 질문이 하나 있습니다. 나는 아직도 이미지 섬네일을 목록에 보여줄 수있는 방법을 찾으려하고있다. 이미지를로드 할 수있는 방법이 있습니까? – ahauth

+0

물론 그렇게 할 수있는 방법이 있지만 이미지가 어디서 왔는지에 따라 다릅니다. SD 카드 또는 애셋에서 해당 이미지를로드하는 경우 [loaddatawithbaseurl] (http://developer.android.com/reference/android/webkit/WebView.html)을 사용하여 HTML 형식을 보내야합니다. String과 baseurl은 이미지의 출처에 따라 다릅니다. URLS에서 이미지를 가져온 경우 loaddata 메소드를 사용하여 HTML의 이미지를 가리킬 수 있습니다. 나는 이것이 당신의 질문을 해결했으면 좋겠다. –

+0

또한이 방법으로 문제가 해결되면 대답을 수락 한 것으로 표시하여 누구나 와서 보게되면 도움이 될 것입니다. –

관련 문제