2013-03-04 41 views
2

我在一个名为parse.com的云存储站点中更新每行更新值的问题。我只是使用parse.com的新手。我已阅读关于它的文档并理解它。但是我想要做的是与那里的例子有点不同。这里是我的代码..使用android平台更新parse.com中每行的值

public void onClick(View arg0) { 
    if (arg0.getId() == R.id.button1) { 
     ParseQuery query = new ParseQuery("inventory"); 
     query.findInBackground(new FindCallback() { 

       public void done(List<ParseObject> test, ParseException e) { 

        ParseObject testObject = new ParseObject("inventory"); 
        if(e==null) { 
         String str=""; 
         String str2=""; 
         for(int x =0;x<test.size();x++){ 
          str = test.get(x).getString("name"); 
          str2 = test.get(x).getString("quantity"); 
          if (!str.equals(et1.getText().toString())){ 
          str = ""; 
          } 
          if(str.equals(et1.getText().toString())) 
          { 


             testObject.put("quantity", et2.getText().toString()); 
             testObject.saveInBackground(); 

           x = test.size(); 
          } 
          else{ 
           tv1.setText("error" + e.getMessage()); 
          } 
       } 


        }} 

     }); 

    } } 

我想更新我输入的产品名称的数量。当我的输入与云上的名称相同时,它将更新另一列,这一列是指我输入的产品名称。但作为我的代码的结果,它创建了一个新的行,而不是更新现有的行..我的代码中缺少什么/错误?有人可以帮帮我吗? :) 提前致谢! :)

回答

1

我搞清楚同样的问题。我发现this

回答说,更新现有的对象,需要先检索。检索方法在其网站上的文档中给出。

编辑: 完成!这是你如何做到的;首先获取对象,然后通过更新方法更新所需的值。

ParseQuery query = new ParseQuery("UserName"); 
      query.getInBackground("GKIp4pxBrF", new GetCallback() { 
       public void done(final ParseObject object, ParseException e) { 
       if (e == null) { 

        object.put("Name", username); 
        object.saveInBackground(new SaveCallback() { 
        public void done(ParseException e) { 

        object.put("Name", oldname); 

       } 
       }); 

      } 

       else { 
       e.printStackTrace(); 
       } 

     } 
}); 

如果你不知道前手的对象代码,我建议你通过query找到所需的行。

+0

非常感谢!它真的帮了我很多。找了很久。 – Sharath 2016-01-05 18:51:11