2012-10-25 27 views
0

我有下面的XML:我如何可以調用的WebView從一個ListView

<string-array name="bookmark_titles"> 
    <item>Google</item> 
    <item>Android</item> 
    <item>Offspot</item> 
</string-array> 

<string-array name="bookmark_urls"> 
    <item>http://www.google.com</item> 
    <item>http://www.android.com/</item> 
    <item>http://www.offspot.com</item> 
</string-array> 

,這ListView控件中的一個分隔的文件:

<ListView 
    android:id="@+id/favoritos_listView" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:divider="#ECECEC" 
    android:dividerHeight="1sp" /> 

Wevbiew

WebView wv = (WebView) findViewById(R.id.webview); 

這是我如何實施ListView

ArrayAdapter<CharSequence> aa = ArrayAdapter.createFromResource(this, R.array.bookmark_titles, android.R.layout.simple_list_item_1); 
    lv.setAdapter(aa); 

當我點擊ListView中的某個項目時,如何調用WebView?

+0

是在同一活動或其他活動的網頁視圖? –

+0

這是另一項活動,因爲我必須點擊Google項目並打開www.google.com。對? – androidevil

+0

你可以在下面檢查我的答案,如果有幫助 –

回答

0

實現一個OnItemClickListener並將其設置爲你的ListView像這樣:

listView.setOnItemClickListener(new OnItemClickListener() { 
    onItemClick(AdapterView<?> parent, View view, int position, long id) { 
    String url = getContext().getResources().getStringArray(R.array.bookmark_urls)[position]; 
    //opens the url in one of the Android Browsers. 
    Intent intent = new Intent(Intent.ACTION_VIEW); 
    intent.setData(Uri.parse(url)); 
    getContext().startActivity(intent); 
    } 
} 
+0

你的意思是重寫onItemClick方法嗎? – androidevil

+0

看看上面提供的實現。你需要創建一個'OnItemClickListener'接口的新實現,並將它提供給'ListView'。 – keyboardsurfer

0

什麼是你的WebView的名字嗎?

第一件事你需要一個引用到你的web視圖。

WebView mWebView = (WebView)MyLayout.findViewById(R.id.webView1); 

那麼你的列表視圖需要itemOnClick方法,它決定什麼,當你對一個列表視圖項

//Show webview 
     lv.setOnItemClickListener(new OnItemClickListener(){ 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id){ 
       mWebView.setVisibility(View.VISIBLE); //Show the webview 
       mWebView.refreshDrawableState(); 
       mWebView.loadUrl("www.google.com"); 
      } 
     }); 

點擊,如果你從你點擊的項目需要具體的數據使用位置變量做得到它 - lv.getItemAtPosition(position)

upvote如果這對你有幫助! :)

+0

我把我的webview的參考。那是錯的嗎? – androidevil

+0

不行,你做得很好 – krilovich

+0

謝謝,但我把這個代碼放在哪裏?在我的「公共類HomeActivity擴展活動」?我得到這個錯誤:新的AdapterView.OnItemClickListener(){}類型必須實現繼承的抽象方法AdapterView.OnItemClickListener.onItemClick(AdapterView ,View,int,long) – androidevil

0

如果同一活動

WebView lWebView = (WebView)MyLayout.findViewById(R.id.webView); 
    lWebView.setVisibility(View.GONE);//you can use View.INVISIBLE also if you need to keep the space 
    String[] lTestArray = = getResources().getStringArray(R.array. bookmark_urls); 
    listView.setOnItemClickListener(new OnItemClickListener(){ 
       public void onItemClick(AdapterView<?> parent, View view, int position, long id){ 
        lWebView.setVisibility(View.VISIBLE); //Show the webview 
        lWebView.loadUrl(lTestArray[position]); 
       } 
      }); 

EDIT另一個活動
的ListView類

listView.setOnItemClickListener(new OnItemClickListener(){ 
       public void onItemClick(AdapterView<?> parent, View view, int position, long id){ 
        Intent intent=new Intent(this,YOURCLASS.class); 
        intent.putExtra("Link",lTestArray[position]); 
        startActivity(intent); 
       } 
      }); 

web視圖類

Bundle bundle=getIntent().getExtras(); 
    String link=bundle.getString("Link",null); 
    if(!link.equals(null)){ 
    WebView lWebView = (WebView)MyLayout.findViewById(R.id.webView); 
    lWebView.loadUrl(link); 

} 
+0

這是什麼意思與MyLayout在此代碼?我只是把 WebView lWebView =(WebView)findViewById(R.id.webview)。 Algo我得到這些錯誤:「令牌上的語法錯誤」setVisibility「,該標記後面的標識符」和「標記上的語法錯誤」setOnItemClickListener「,=此標記後面的」 – androidevil

相關問題