【问题标题】:load html at listview item onclick在listview项目onclick加载html
【发布时间】:2010-10-18 06:30:07
【问题描述】:

我现在被困在从我的资产文件夹加载 html 中。我在 assets 文件夹下有几个 html 页面,并且必须在 listview item onclick 上加载这些页面。每个列表视图项都拥有自己的 html 页面。有人知道我如何获得 onclick 事件以及如何显示特定的 html 页面吗?

谢谢

【问题讨论】:

    标签: html android listview webview


    【解决方案1】:
    public class WebViewWithListActivity extends Activity {                                                    
        private String lv_arr[] = { "Android", "iPhone", "BlackBerry"};                                        
        ListView lv1;                                                                                          
        /** Called when the activity is first created. */                                                      
        @Override                                                                                              
        public void onCreate(Bundle savedInstanceState) {                                                      
            super.onCreate(savedInstanceState);                                                                
            setContentView(R.layout.main);                                                                     
            lv1 = (ListView) findViewById(R.id.listView1);                                                     
            lv1.setAdapter(new ArrayAdapter<String>(this,                                                      
                    android.R.layout.simple_list_item_1, lv_arr));                                             
            lv1.setTextFilterEnabled(true);                                                                    
            lv1.setOnItemClickListener(new OnItemClickListener() {                                             
    
                @Override                                                                                      
                public void onItemClick(AdapterView<?> arg0, View arg1, int position,long id)                  
                {                                                                                              
                        AlertDialog.Builder adb = new AlertDialog.Builder(WebViewWithListActivity.this);       
                        adb.setTitle("Selected item");                                                         
                        adb.setMessage("Selected Item is = "                                                   
                                + lv1.getItemAtPosition(position));                                            
                        adb.setPositiveButton("Ok", null);                                                     
                        Log.i("Selected item is ",(String) lv1.getItemAtPosition(position)+"" );               
                         adb.show();                                                                           
    
                        //TextView tvUrl = (TextView) view.findViewById(R.id.item2);                           
                        TextView tvUrl=(TextView) findViewById(R.id.item2);                                    
                        if(lv1.getItemAtPosition(position).equals("Android"))                                  
                        {                                                                                      
                                    GlobalVariable.SetURL("http://www.google.co.in/");                         
                                    Log.i("Global vari : ",GlobalVariable.GetURL());                           
                                    Intent i = new Intent(WebViewWithListActivity.this,WebViewDemo.class);     
                                    //i.putExtra("http://www.google.co.in/", tvUrl.getText());                 
    
                                    startActivity(i);                                                          
    
                        }                                                                                      
    
                }                                                                                              
            });                                                                                                
    
    
        }                                                                                                      
    }                                                                                                
    

    这是WebViewDemo。我只是扩展了Activity:

    public class WebViewDemo extends Activity{
        private WebView webView;
    
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.layout_webview);
            //String url =getIntent().getStringExtra("url");//get url that pass from the other screen
            //Log.i("url ", url+"");
            Log.i("Global vari : ",GlobalVariable.GetURL());
    
            webView = (WebView)findViewById(R.id.wvDisplay);
            WebSettings webSetting= webView.getSettings(); //create new settings for webView
            webSetting.setJavaScriptEnabled(true); // enabled javascript
            webView.setWebViewClient(new WebViewClient()); //set up webviewclient, this set not to open the default browser when link click
            //Log.i("url ", url+"");
            webView.loadUrl(GlobalVariable.GetURL());//load the web page
    
    
    
        }
    
    }
    
    
    public class GlobalVariable extends Application{
        private static String url;
        public static String GetURL() 
        {
            return url;
        }
         public static void SetURL(String URL) {
                url = URL;
            }
    
    }
    

    【讨论】:

      【解决方案2】:
      1. 您可以使用 ListView 的setOnItemClickListener 方法来获取列表项的点击事件。
      2. 您可以使用WebView 的loadUrl 方法来显示您的html 页面。见WebView tutorial

      【讨论】:

      • 是的,我知道这一点,但我有很多 html 页面要在 webview 中显示。我的意思是每个列表项都有自己的 html 页面。我怎样才能收到 onclick 项目 ID?无论如何,谢谢你的回复。
      • 我不知道我是否正确。单击列表项时,将触发您的侦听器,您可以在 AdapterView.OnItemClickListener 的实现中获取单击的项 id,不是吗?
      【解决方案3】:

      老兄......放弃......它不会工作 - 当你在 listview 中有一个 webview 时,没有办法让这个监听器工作

      【讨论】:

      • 嗯,终于对我有用的东西...删除所有 android:focusable... 或 android:clickable ... = "false" 项目视图定义中的内容...以及每个 webview您实例化执行以下操作: webView.setFocusable(false); webView.setClickable(false)
      【解决方案4】:

      您可以使用自定义 webViewClient 并捕获 html 中的链接,然后您可以根据点击次数做任何您想做的事情。

      【讨论】:

        猜你喜欢
        • 2016-05-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多