我从Parse.com数据库中提取代码并将其存储到ArrayList中。然后我将ArrayList转换为String数组,以便将其放入ListView中。一切都很好,花花公子,但有一个例外。让我告诉你。
以下是我从Parse.com数据库中提取代码的方法。
ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("myClassName");
query.whereEqualTo("Parse.com Column", /**int inside the column*/ );
query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> list, ParseException e) {
if (e == null) {
for (int i = 0; i < list.size(); i++) {
//My Code Here
}
}
}
});
上面的代码将搜索Parse.com中的每一列,并查找您在列中定义的int。找到对象后,您可以从该对象拉出来。
现在这是我用该代码编写的内容:
public void getData() {
ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("Merchandize");
query.whereEqualTo("simpleID", simpleID);
query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> list, ParseException e) {
if (e == null) {
for (int i = 0; i < list.size(); i++) {
items.add(list.get(i).getString("item"));
Log.i("KOTB", list.get(i).getString("item"));
itemDesc.add(list.get(i).getString("description"));
simpleID++;
if (simpleID <= 13) {
Log.i("KOTB", "re-running getData()");
getData();
} else if (simpleID > 14){
arrayAdapterMethod();
}
}
}
}
});
}
public void arrayAdapterMethod() {
Log.i("KOTB", "==arrayAdapterMethod()==");
Log.i("KOTB","Converting");
String array[] = new String[items.size()];
for (int j = 0; j < items.size(); j++) {
array[j] = items.get(j);
Log.e("KOTB", array[j]);
}
for (String k: array) {
Log.w("KOTB [NOTE]", k);
}
ArrayAdapter<String> myAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, array);
setListAdapter(myAdapter);
}
它正在搜索名为simpleID的列中的Parse.com数据,一旦找到int,它就在simpleID中搜索它运行代码。 如果您想看看我的Parse.com表,请转到:
http://gyazo.com/62d4b37f531c54bf65089958e5af11fc
现在这是我的问题。 void done&lt; if statments getData 我有预定义的数字。
if (simpleID <= 13) {
Log.i("KOTB", "re-running getData()");
getData();
} else if (simpleID > 14){
arrayAdapterMethod();
}
如果我在Parse.com数据库中添加项目,那么在我的代码中就不会读取该项目,因为硬编码的数字。
如何计算我拥有的SimpleID数量,并将它们保存为int?
答案 0 :(得分:0)
以下是您的代码的阅读方式。
获取与int simpleID匹配的所有simpleID
query.whereEqualTo("simpleID", simpleID);
我将假设您将simpleID定义为int simpleID = 0;
此处返回的列表将是“simpleID”等于this.simpleID
query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> list, ParseException e) {
if (e == null) {
for (int i = 0; i < list.size(); i++) {
items.add(list.get(i).getString("item"));
Log.i("KOTB", list.get(i).getString("item"));
itemDesc.add(list.get(i).getString("description"));
simpleID++;
如果simpleID小于你的?max?然后simpleID再次使用新的simpleID
运行getData if (simpleID <= 13) {
Log.i("KOTB", "re-running getData()");
getData();
} else if (simpleID > 14){
arrayAdapterMethod();
}
}
}
}
});
好像你正在迭代表中的所有项目并将它们放入一个字符串数组中。即使您将this.simpleID
设置为初始化值,您仍然可以从该simpleID值及更高版本获取该表的所有行。我的建议是使用whereGreaterThanOrEqualTo("simpleId", simpleID)
查询。此查询的结果将允许您删除simpleId增量,只需要一个列表进行迭代。
我想是这样的事情。
public void getData() {
ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("Merchandize");
query.whereGreaterThanOrEqualTo("simpleID", simpleID);
query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> list, ParseException e) {
if (e == null) {
for (int i = 0; i < list.size(); i++) {
items.add(list.get(i).getString("item"));
Log.i("KOTB", list.get(i).getString("item"));
itemDesc.add(list.get(i).getString("description"));
}
arrayAdapterMethod();
}
}
}
});
}