我正在从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
现在这是我的问题。我的if语句在void中完成了
if (simpleID <= 13) {
Log.i("KOTB", "re-running getData()");
getData();
} else if (simpleID > 14){
arrayAdapterMethod();
}
如果我在Parse.com数据库中添加项目,则由于硬编码的数字,它不会在我的代码中读取该项目。
如何计算我拥有的SimpleID数并将它们保存为int类型?
最佳答案
这是您的代码阅读方式。
获取所有与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();
}
}
}
});
}