0

我有自己的班级订单,里面有很多字段。我使用自定义的 ArrayAdapter 将它们的 LinkedList 放到 ListView 中。但是我需要将每个订单对象与listView的对应视图绑定。我试图实现 listView 的 getChildView() 方法,但它对我来说不能正常工作。请告诉我如何为此实施强大而快速的解决方案?我应该为此使用 LinkedList 吗?或者我应该创建自己的数据容器?此外,在我看来,向 Order 对象添加一个 View 字段似乎会降低性能。

4

1 回答 1

0

我通过使用 HashMap 解决了这个问题。我使用单调模式创建和使用哈希图:

    public class OrdersViewMapSingletone {
     Map<Order, View>  arrayList;

    private static OrdersViewMapSingletone instance;

    private OrdersViewMapSingletone()
    {
        arrayList = new  HashMap<Order,View>();
    }

    public static OrdersViewMapSingletone getInstance(){

        return instance;
    }

     public static void initInstance()
      {
         if (instance == null)
         {
                instance = new OrdersViewMapSingletone();
         }
      }

    public Map<Order, View> getOrderViewMap()
    {
        return arrayList;
    }

    @Override
    public String toString()
    {       
    return getOrderViewMap().toString();    
    }
}

在我的 OrderAdapter 中:

 Map<Order, View> orderViewMap = OrdersViewMapSingletone.getInstance().getOrderViewMap();

在 getView() 方法中添加项目:

orderViewMap.put(order,row);

以及在活动中获取项目的这种方法:

public View getMapedView(Order order)
    {
        return this.orderViewMap.get(order);
    }

对我很好。性能比使用 ArrayList 好得多。

于 2013-05-31T15:29:33.963 回答