在 Android 中通过 onClick 事件通过 XML 获取特定条目

Posted

技术标签:

【中文标题】在 Android 中通过 onClick 事件通过 XML 获取特定条目【英文标题】:Fetch a specific entry through XML by onClick event in Android 【发布时间】:2016-01-31 16:40:39 【问题描述】:

我有一个包含项目列表(博客)的 listView。每个项目都包含一个标题和链接。 现在我希望当单击一个特定项目时,我想开始 xml 解析以仅获取该链接的内容并将其显示在另一个活动中。

这是 onListItemClick() 方法,当特定项目被按下时调用。

@Override
protected void onListItemClick(ListView l, View v, int position, long id) 
    String urlBlog = mainBlogPost.get(position).link;
    Log.d(TAG,urlBlog);
    super.onListItemClick(l, v, position, id);

这是显示列表的 onPostExecute 方法

@Override
    protected void onPostExecute(List<***XmlParser.Entry> results) 
        if (results != null && mException == null) 
            String title,link,summary;
            ArrayList<HashMap<String,String>> blogPosts = new ArrayList<HashMap<String,String>>();
            for(***XmlParser.Entry result : results)
                title = result.title;
                link = result.link;
                summary = result.summary;
                HashMap<String,String> blogPost = new HashMap<String,String>();
                blogPost.put("link",link);
                blogPost.put("title",title);
                //blogPost.put("summary",summary);

                blogPosts.add(blogPost);
            
            Collections.copy(results,mainBlogPost );   //copying for public access
            String[] keys = "title","link";
            int[] ids = android.R.id.text1,android.R.id.text2;
            SimpleAdapter adapter =
                    new SimpleAdapter(MainListActivity.this,blogPosts,android.R.layout.simple_list_item_2,keys,ids);
            setListAdapter(adapter);

         else 
            if (mException instanceof IOException)
             else if (mException instanceof XmlPullParserException) 
            
        

*/

10-31 14:32:10.612    2616-2616/com.example.talha.appforblog E/MainListActivity﹕ Exception
java.lang.IndexOutOfBoundsException: Invalid index 3, size is 0
        at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
        at java.util.ArrayList.get(ArrayList.java:308)
        at com.example.talha.appforblog.MainListActivity.onListItemClick(MainListActivity.java:86)
        at android.app.ListActivity$2.onItemClick(ListActivity.java:319)
        at android.widget.AdapterView.performItemClick(AdapterView.java:300)
        at android.widget.AbsListView.performItemClick(AbsListView.java:1143)
        at android.widget.AbsListView$PerformClick.run(AbsListView.java:3044)
        at android.widget.AbsListView$3.run(AbsListView.java:3833)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5221)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)

【问题讨论】:

那么你的问题是什么? 我想实现这一点。单击特定项目时,我获取 url 并通过 xml 解析获取该链接的内容.. 那你应该发起一个带有特定链接的http请求来获取响应数据。 当单击特定项目时,我收到索引超出范围异常的错误。我在上面粘贴了我的 onListItemClick() 我在 onPostExecute() 方法中创建了 mainBlogPost 列表,并将“结果”列表复制到 mainBlogPost 列表中 【参考方案1】:

Collections.copy(results,mainBlogPost );,我想你想将结果复制到mainBlogPost,但也许你误解了这个方法,比如这里:[http://developer.android.com/intl/es/reference/java/util/Collections.html#copy(java.util.List, java.util.List)](http://developer.android.com/intl/es/reference/java/util/Collections.html#copy(java.util.List, java.util.List)) ,第一个参数是destination,第二个参数是source。

【讨论】:

你是对的。但是有一个问题。我无法在初始化时设置 mainBlogPost 的大小。复制时如何设置其大小 非常感谢..我用for循环来复制

以上是关于在 Android 中通过 onClick 事件通过 XML 获取特定条目的主要内容,如果未能解决你的问题,请参考以下文章

在 Google Maps Android API 中通过 onclick 选择功能

如何在Android Java中通过按钮的ID使用OnClickListener属性

如何解决控件的onTouch事件与onClick事件的冲突问题

Android studio关于界面跳转问题

js事件绑定方法

如何解决blur事件和click事件冲突问题