如何使用来自 Arraylist<Hashmap<String,String>> 的 bundle 获取使用 putserializable 传递的值

Posted

技术标签:

【中文标题】如何使用来自 Arraylist<Hashmap<String,String>> 的 bundle 获取使用 putserializable 传递的值【英文标题】:How to get valus passed using putserializable using bundle from Arraylist<Hashmap<String,String>> 【发布时间】:2016-02-02 02:59:00 【问题描述】:

我使用以下创建了一个列表,它从具有 getter 和 setter 的模型类中获取值。

    int k = model.getChildren().size();
    for(int i=0;i < k;i++) 
        HashMap<String, String> map = new HashMap<String, String>();
        galleryChildModel = model.getChildren().get(i);
        map.put("caption", galleryChildModel.getImagecaption());
        map.put("imageurl", galleryChildModel.getImageurl());
        list.add(map);
    

然后我使用这个 setOnItemClickListener 将此值传递给下一个片段

       gridchild.setOnItemClickListener(new AdapterView.OnItemClickListener() 
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
            Fragment fragment = new GalleryDetailFragment();
            Bundle bundle = new Bundle();
            bundle.putSerializable("object", list.get(position));
            fragment.setArguments(bundle);
            FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
            fragmentTransaction.replace(R.id.container_body, fragment);
            fragmentTransaction.addToBackStack(null);
            fragmentTransaction.commit();
        
    );

我正在使用

获取相应片段中的值
   Bundle bundle = this.getArguments();

    if (bundle != null) 
          ArrayList<HashMap<String, String>> maps = (ArrayList<HashMap<String, String>>) bundle.get("object"); // here i cannot cast the value to hashmap or any list. im really stuck here can anyone help me out with this
    

我得到的价值是这样的

捆绑[对象=[ imageurl=http://futhead.cursecdn.com/static/img/15/players/20801.png,caption=Ronaldo.]]

如何从中获取数据并设置为 textview 和 imageview....

【问题讨论】:

list 是什么类型? ArrayList> 列表; //我不能转换值,它显示未经检查的转换并给出错误 然后你必须将它转换为 ArrayList 而不是 HashMap @Blackbelt 我试过了,但我显示未经检查的演员表 未经检查的演员表:'java.lang.Object' 到 'java.util.ArrayList> 【参考方案1】:
bundle.putSerializable("object", list.get(position));

您存储在“对象”下的 Serializable 是 HashMap 而不是 List,因此您应该转换为 Hashmap:

HashMap<String,String> map = (HashMap<String, String>) bundle.getSerializable("object");

【讨论】:

这里还有另一个问题....列表不断重复,因为我移动到下一个活动并且卷土重来有什么方法可以阻止它 重复是什么意思。你需要澄清这一点。 谢谢,但我通过在执行列表之前添加适配器 ==null 解决了它,它可以工作

以上是关于如何使用来自 Arraylist<Hashmap<String,String>> 的 bundle 获取使用 putserializable 传递的值的主要内容,如果未能解决你的问题,请参考以下文章

VectorArrayListList使用深入剖析

java容器

将 Long(来自构造函数)转换为 String 后过滤 ArrayList

来自 ArrayList 类的列表视图

如何在列表视图中显示来自arraylist的所有解析数据?

来自 DAO 类的 JSTL foreach ArrayList 对象不起作用