收集排序的问题

时间:2016-07-20 12:23:45

标签: android sorting collections

我使用下面的代码。

其中Sorting.costItemBySortKey是静态比较器

repository.addCostItems(items)将项目保存到SQLite数据库。

我发现在某些设备上并非所有项目都保存到db。

有什么问题?我发生这件事是因为我在保存前使用Collections.sort,不是吗?

protected void createCostItems(){
        List<CostItem> items = new ArrayList<>();
        String[] itemsName  = context.getResources().getStringArray(R.array.default_cost_items);
        int[]    itemsIcon  = context.getResources().getIntArray(R.array.default_cost_item_icons);
        int[]    itemsGroup = context.getResources().getIntArray(R.array.default_cost_item_group);
        int[]    costType   = context.getResources().getIntArray(R.array.default_cost_item_cost_type);
        int[]    costSort   = context.getResources().getIntArray(R.array.default_cost_item_sort1);
        CostItem item;
        for (int i=0; i< itemsName.length; i++) {
            item = new CostItem(i, itemsName[i], itemsIcon[i], itemsGroup[i], costType[i], costSort[i]);
            items.add(item);
        }        
        Collections.sort(items, Sorting.costItemBySortKey);
        repository.addCostItems(items);
        costItems=null;
    }

保存到db的代码

public void addCostItem(CostItem costItem){
            costItemDataAdapter.appendItem(database, costItem);
        }

public void appendItem(SQLiteDatabase db, T item){
        DataRow row = this.itemToRow(item);
        if(item.getId() == Item.NEW_ID)
            row.column("_id").setValue(null);

        ContentValues values = new ContentValues();
        List<DataColumn> rowColumns = row.Columns();

        for (DataColumn column: rowColumns){
            if(column.getDataType().equals("integer"))
                values.put(column.getName(), column.getInteger());
            if(column.getDataType().equals("varchar"))
                values.put(column.getName(), column.getString());
            if(column.getDataType().equals("real"))
                values.put(column.getName(), column.getFloat());         
        }

        int id = (int)db.insert(this.Name, null, values);
        item.setId(id);
    }

0 个答案:

没有答案