大家好,
我正在尝试构建一个滚动的自定义列表视图,显示按价格升序排序的产品列表。然而,我刚刚意识到我将价格存储为字符串,这意味着$ 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非常了解,您可以给予我任何帮助。
提前致谢。
答案 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);