ParseQuery:从数据库中的价格列表转换为字符串android

时间:2015-12-06 06:54:43

标签: java android arrays parse-platform columnsorting

大家好,

我正在尝试构建一个滚动的自定义列表视图,显示按价格升序排序的产品列表。然而,我刚刚意识到我将价格存储为字符串,这意味着$ 2.0.00在$ 2.01之前,因为它是一个字符,而不是一个数字。我已经将我的数据转换为Parse上的“数字”,并且相信检索它的最佳类型是双倍的(任何人都可以对美元数量进行评论)。问题是我需要将它保存为数字,将其转换为字符串,然后将其传递给listview以显示在文本字段上。最初我有

PPI.setProductprice((String) product.get("Price")); 
像这样:

            // Locate the class table named "Products" in Parse.com
            ParseQuery<ParseObject> query = new ParseQuery<ParseObject>(
                    "Products");
            // Locate the column named "Price" in Parse.com and order list
            // by ascending
            query.orderByAscending("Price");
            ob = query.find();
            for (ParseObject product : ob) {
                // Locate images in PrimaryPhoto column
                ParseFile productimage = (ParseFile) product.get("PrimaryPhoto");

                ProductPopulation PPI = new ProductPopulation();

                PPI.setProductname((String) product.get("Name"));
                PPI.setProductbrand((String) product.get("Brand"));
                PPI.setProductprice((String) product.get("Price"));
                PPI.setProductimage(productimage.getUrl());
                productpopulationlist.add(PPI);

然后我尝试将它放入一个双精度数组中,迭代它以转换为字符串。

我可能没有意义的最后一次尝试就是改变它:

PPI.setProductprice((Double) product.getDouble("Price"));

我对Android非常了解,您可以给予我任何帮助。

提前致谢。

2 个答案:

答案 0 :(得分:0)

好的,所以我不在这里得到上下文,但你可以做的是将价格保存为字符串,当提取它时,你可以在字符串上调用Integer.parseInt(String intvalue);将值转换回int然后你可以做你应该做的所有操作。你可以从服务器获得一个无序的数组,并在设备级别安排它,这将节省你一些时间和逻辑。

答案 1 :(得分:0)

我不知道你用来填充列表的ProductPopulation类是什么,所以我不能说你的情况下最好的方法是什么,但一般来说可以通过Collections.sort订购一个列表()方法(见the method documentation)。
您可以在将列表添加到列表视图之前对列表进行排序。要按照您需要的方式对列表进行排序,您必须提供比较器,而不是从组成列表的对象获取所需的值(字段或方法结果),比较获得的值并返回-1,0或1,具体取决于比较结果。 看起来有点像这样:

for (...) {
  ItemClass newObject = new ItemClass(); // new list item
  // ...here add the values to the list item...
  theList.add(newObject); // add the new item to the list 
}

// now sort the list before adding it to the list viewer 
Collections.sort(theList, new Comparator<ItemClass>() {
  @Override
  public int compare(ItemClass o1, ItemClass o2) {
     // obtain and compare the values you need 
    return Double.compare(o1.getDouble(), o1.getDouble());
       // you could also do something like 
       //  Double.compare(
       //     Double.parseDouble(o1.getString()),   
       //     Double.parseDouble(o2.getString()));
       // but it would be much slower   
  }
});

// now add the sorted list to the viewer 
listViewer.setList(theList);