listview-lazyadapter 列表视图

问题描述

lazyadapter 列表视图
我想把 ListView 中 selected item 的值传递到另一个 activity 中。
我用下面的代码获取 hashmap 的相关细节,但是却获得 java.lang.Integer cannot be cast to java.util.HashMap 错误。

public void onItemClick(AdapterView<?> parent View view                    int position long id) {                HashMap<String String> o = (HashMap<String String>) list.getItemAtPosition(position);                Toast.makeText(CustomizedListView.thisID '"" + o.get(""KEY_TITLE"") + ""' was clicked."" Toast.LENGTH_SHORT).show();             }     

如何修改呢?

public class CustomizedListView extends Activity {    // All static variables    static final String URL = ""https://itunes.apple.com/us/rss/topalbums/limit=20/json"";    // XML node keys    static final String KEY_SONG = ""song""; // parent node    static final String KEY_ID = ""id"";    static final String KEY_TITLE = ""title"";    static final String KEY_ARTIST = ""artist"";    static final String KEY_DURATION = ""duration"";    static final String KEY_THUMB_URL = ""thumb_url"";    ListView list;    LazyAdapter adapter;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        ArrayList<HashMap<String String>> songsList = new ArrayList<HashMap<String String>>();        JSONObject json = JSONfunctions.getJSONfromURL(URL);        try {            JSONObject arr2 = json.getJSONObject(""feed"");            JSONArray arr = arr2.getJSONArray(""entry"");            for (int i = 0; i < arr.length(); i++) {                JSONObject e1 = arr.getJSONObject(i);                JSONArray arr3 = e1.getJSONArray(""im:image"");                JSONObject arr8 = e1.getJSONObject(""im:name"");                JSONObject arr10 = e1.getJSONObject(""im:artist"");                    JSONObject e12 = arr3.getJSONObject(0);            // creating new HashMap            HashMap<String String> map = new HashMap<String String>();            map.put(KEY_THUMB_URL  e12.getString(""label""));            map.put(KEY_ARTIST arr8.getString(""label""));            map.put(KEY_TITLE arr10.getString(""label""));            // adding HashList to ArrayList            songsList.add(map);            }        } catch (JSONException e) {            // Log.e(""log_tag""Error parsing data ""+e.toString());            Toast.makeText(getBaseContext()Network communication error!"" 5).show();        }        list=(ListView)findViewById(R.id.list);        // Getting adapter by passing xml data ArrayList        adapter=new LazyAdapter(this songsList);                list.setAdapter(adapter);        // Click event for single list row        list.setOnItemClickListener(new OnItemClickListener() {            @SuppressWarnings(""unchecked"")            @Override            public void onItemClick(AdapterView<?> parent View view                    int position long id) {                HashMap<String String> o = (HashMap<String String>) list.getItemAtPosition(position);                Toast.makeText(CustomizedListView.thisID '"" + o.get(""KEY_TITLE"") + ""' was clicked."" Toast.LENGTH_SHORT).show();             }        });         }   }

但是下面的同样的代码可以运行,这是为什么呢?
这个例子中是 SimpleAdapter

public class Main extends ListActivity {    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.listplaceholder);        ArrayList<HashMap<String String>> mylist = new ArrayList<HashMap<String String>>();        JSONObject json = JSONfunctions.getJSONfromURL(""http://api.geonames.org/earthquakesJSON?north=44.1&south=-9.9&east=-22.4&west=55.2&username=demo"");        try{            JSONArray  earthquakes = json.getJSONArray(""earthquakes"");            for(int i=0;i<earthquakes.length();i++){                                        HashMap<String String> map = new HashMap<String String>();                    JSONObject e = earthquakes.getJSONObject(i);                map.put(""id""  String.valueOf(i));                map.put(""name""Earthquake name:"" + e.getString(""eqid""));                map.put(""magnitude""Magnitude: "" +  e.getString(""magnitude""));                mylist.add(map);                        }               }catch(JSONException e)        {             Log.e(""log_tag""Error parsing data ""+e.toString());        }        ListAdapter adapter = new SimpleAdapter(this mylist  R.layout.main                         new String[] { ""name""magnitude"" }                         new int[] { R.id.item_title R.id.item_subtitle });        setListAdapter(adapter);        final ListView lv = getListView();        lv.setTextFilterEnabled(true);          lv.setOnItemClickListener(new OnItemClickListener() {            public void onItemClick(AdapterView<?> parent View view int position long id) {                              @SuppressWarnings(""unchecked"")                HashMap<String String> o = (HashMap<String String>) lv.getItemAtPosition(position);                                   Toast.makeText(Main.thisID '"" + o.get(""id"") + ""' was clicked."" Toast.LENGTH_SHORT).show();             }        });    }}

解决方案

LazyAdapter 里面的getItem()方法的具体内容贴出, 看了你的代码觉得是Adapter里面有问题 而且有可能是getItem(int position)方法有问题

时间: 2024-09-04 01:48:43

listview-lazyadapter 列表视图的相关文章

listview-改变列表视图ListView中的字体和背景

问题描述 改变列表视图ListView中的字体和背景 我想改变列表视图ListView中的字体(颜色和大小)和背景.我想用代码改变而不是想通过设置xml的属性实现.以下的list view看起来就像xml: <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" andr

关于列表视图listview的单元格滚动坐标定位的计算。

问题描述 关于列表视图listview的单元格滚动坐标定位的计算. 关于列表视图listview的单元格滚动坐标定位的计算.怎么在滚动视图以后计算单元格相对屏幕的坐标位置呢? 解决方案 提个思路:知道listview.getChildAt(index)吧?然后看看这个http://blog.csdn.net/youshi520000/article/details/50327225 解决方案二: http://blog.csdn.net/lilybaobei/article/details/81

Qt qml中listview 列表视图控件(下拉刷新、上拉分页、滚动轴)_Android

Qt qml listview下拉刷新和上拉分页主要根据contentY来判断.但要加上顶部下拉指示器.滚动条,并封装成可简单调用的组件,着实花了我不少精力:) 先给大家展示下效果图: [功能] 下拉刷新和上拉分页逻辑 /下拉刷新 /上拉更多 /滚动栏 /工具栏半拉显隐 Author: surfsky.cnblogs.com Lisence: MIT 请保留此文档声明 History: init. surfsky.cnblogs.com, 2015-01 add initPosition pro

c#-谁能用C#帮我实现一个支持拖拽的列表框/列表视图

问题描述 谁能用C#帮我实现一个支持拖拽的列表框/列表视图 需要一个示例代码 我没学过C# 我现在需要一份用C#实现的代码 和我用MFC实现的代码来比较两者的效率 希望各位大哥大姐帮帮忙 谢谢了 解决方案 C# 两个listView内部和相互拖拽,任意位置拖拽,不重复,自动排序

xml-Android列表视图返回空值?

问题描述 Android列表视图返回空值? 我想创建一个标签应用,但是它一直由于空指针异常而死机. 我检查了所有可能会导致一个空指针的变量,并且限制了长度. ListView activeList = (ListView) findViewById(R.id.activelist); if(activeList == null) { Log.e("com.name.app", "activeList null"); } 还是返回空指针.我使用 fragments 创

android-Android中列表视图和对话框问题

问题描述 Android中列表视图和对话框问题 在自定义对话框里有一个id:列表视图.我想在列表中输入R.array.tones资源中的字符串.这个类继承 Activity而不是ListActivity.使用以下代码,系统报错:toneList有一个异常的空指针. Dialog dialog = new Dialog(this); dialog.setContentView(R.layout.tone_dialog); dialog.setTitle(R.string.tonePromptTit

listview-如何从自定义列表视图获得选中的项?

问题描述 如何从自定义列表视图获得选中的项? 程序中的自定义列表视图的每一行都包含许多TextViews,当我点击List Item时,OnListItemClick()没有被调用.如何获取一个自定义列表视图中选中的项? XML for Row: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/ap

android-如何获得列表视图的位置

问题描述 如何获得列表视图的位置 现在 Listview 的 onListItemClick()方法中有问题,不能获取 list 的位置.这是我使用的代码请大家帮忙.coverletterselection.xml <RelativeLayout xmlns:android=""http://schemas.android.com/apk/res/android"" android:layout_width=""wrap_content&q

Android用户界面设计:“.NET研究”创建列表视图程序

列表视图(ListView)是Android平台下用于显示不定数量的数据最有用的视图控件之一.在这个教程中,我们将向你展示如何使用ListView来浏览文章列表. 在之前的文章中,你看到了许多关于不同布局控件的教程.在今天这个教程中,你将结合使用它们.应用程序本身非常简单:它将显示文章标题列表,当点击标题时,显示文章内容.这篇文章的节奏将比我们的入门教程更快一些.如果你对基本的Android控件或概念不熟悉你可能需要复习这个网站上我们其它的一些教程,甚至是Android API参考.最终的开源代