【问题标题】:android dictionary int, Imageviewandroid字典int,Imageview
【发布时间】:2012-09-05 14:39:38
【问题描述】:

我无法将对象放入字典并获取它们,我想将 imageViews 与 int 相对,但失败且没有任何错误

字典声明为:

    Dictionary<Integer, ImageView> dictPlayerAll = new Dictionary<Integer, ImageView>(){

        @Override
        public int size() {
            // TODO Auto-generated method stub
            return 0;
        }

        @Override
        public ImageView remove(Object key) {
            // TODO Auto-generated method stub
            return null;
        }

        @Override
        public ImageView put(Integer key, ImageView value) {
            // TODO Auto-generated method stub
            return null;
        }

        @Override
        public Enumeration<Integer> keys() {
            // TODO Auto-generated method stub
            return null;
        }

        @Override
        public boolean isEmpty() {
            // TODO Auto-generated method stub
            return false;
        }

        @Override
        public ImageView get(Object key) {
            // TODO Auto-generated method stub
            return null;
        }

        @Override
        public Enumeration<ImageView> elements() {
            // TODO Auto-generated method stub
            return null;
        }
    };;

这里将值放入字典中

    int mTag = iv.getTag();//its my imageview
    dictPlayerAll.put(mTag, iv);

但它显示的大小为零

【问题讨论】:

  • 你在任何地方都使用 setTag() 吗?我会使用int mTag = iv.getId();
  • 是的,我有 settag() 我正在使用这个图像视图
  • “它显示零大小”因为你 return 0;,不要自己实现 Dictionary,使用类似 Hashtable 或更好的实现 HashMap

标签: java android dictionary


【解决方案1】:

您的更新更有意义,但 Dictionary 类仍然过时。来自the documentation

java.util 类词典
...
注意:不要使用这个类,因为它已经过时了。

由于您要创建一个以整数 (new Dictionary&lt;Integer, ImageView&gt;()) 为索引的表,我们应该使用 SparseArray。

此外,当您使用 setTag() 时,您会将 Integer 转换为 Object,并且每次使用 getTag() 时,您都会将 Integer 从 Object 转换回来。这行得通,但如果你可以使用getId(),它会更快。

我推荐这个:

SparseArray<ImageView> allPlayers = new SparseArray<ImageView>();
...

allPlayers.put(iv.getId(), iv);

【讨论】:

  • 是的,它根据我的需要工作,我是 java 新手,我不知道它在 java 中已经过时,非常感谢
  • 代替:SparseArray allPlayers = new SparseArray();你需要: SparseArray allPlayers = new SparseArray();
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-11
  • 2010-10-07
  • 2017-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多