我在Parse.com上有两个课程:Image&数据。在Data类中,我正在保存3个字段Name,Mobile-number&占用。在Image类中,我正在保存图像。
我必须在这两个类之间创建关系,以便我可以使用相应的移动号码获取图像。一个手机号码可以保存很多图像和表格数据可以有很多手机号码。
无法找到如何使用特定手机号码获取图像。请通过文档获取帮助。提前致谢。这是我的代码:
public class GetImage extends Activity {
// Declare Variables
GridView gridview;
List<ParseObject> ob;
ProgressDialog mProgressDialog;
GridViewAdapter adapter;
Button imgbtn;
EditText mbltxt;
String mobileNumber;
private List<PhoneList> phonearraylist = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Get the view from gridview_main.xml
setContentView(R.layout.listview_main);
// Execute RemoteDataTask AsyncTask
imgbtn=(Button) findViewById(R.id.imgbtn);
mbltxt = (EditText) findViewById(R.id.mbltxt);
imgbtn.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (mbltxt.getText().toString().equals("")) {
Toast.makeText(getBaseContext(), "Please enter a valid mobilenumber", Toast.LENGTH_LONG).show();
}else {
new RemoteDataTask().execute();
}
}
});
}
在询问手机号码后,点击getImage按钮查询该手机号码的所有图片。
// RemoteDataTask AsyncTask
private class RemoteDataTask extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
// Create a progressdialog
mProgressDialog = new ProgressDialog(GetImage.this);
// Set progressdialog title
mProgressDialog.setTitle("Images");
// Set progressdialog message
mProgressDialog.setMessage("Loading...");
mProgressDialog.setIndeterminate(false);
// Show progressdialog
mProgressDialog.show();
}
@Override
protected Void doInBackground(Void... params) {
// Create the array
phonearraylist = new ArrayList<PhoneList>();
try {
// Locate the class table named "Image" in Parse.com
ParseRelation<ParseObject> relation = currentUser.getRelation("img");
ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("Image");
ob = query.find();
for (ParseObject imgob : ob) {
ParseFile image = (ParseFile) imgob.get("ImageFile");
PhoneList map = new PhoneList();
map.setPhone(image.getUrl());
phonearraylist.add(map);
}
}catch (ParseException e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
// Locate the gridview in gridview_main.xml
gridview = (GridView) findViewById(R.id.gridview);
// Pass the results into ListViewAdapter.java
adapter = new GridViewAdapter(GetImage.this,
phonearraylist);
// Binds the Adapter to the ListView
gridview.setAdapter(adapter);
// Close the progressdialog
mProgressDialog.dismiss();
}
}}
答案 0 :(得分:1)
我不是Android开发人员,但我会尝试使用此版本。你有两个类,数据和图像。每个数据实例都可以与许多图像相关联。使每个数据实例唯一的信息是名为Mobile-Number的属性。
您有三种选择: 1. Parse.com数组 2. Parse.com关系 3.一个关联类(如Waquas所建议的那样)。
aData.add("images", someImageObject); aData.saveInBackground();
可以一次关联图像列表:
aData.addAll("images", Arrays.asList(image1, image2, image3));
从parse中检索Data实例时,Image对象显示为“指针”数组。要撤回实际的Image对象,请使用“fetch”。有关如何使用fetch的示例,请查看Parse.com文档的这一部分:
默认情况下,在获取对象时,相关的ParseObjects不是 牵强。这些对象的值在有之前无法检索 像这样被抓住了:
fetchedComment.getParseObject("post")
.fetchIfNeededInBackground(new GetCallback<ParseObject>() {
public void done(ParseObject object, ParseException e) {
String title = post.getString("title");
}
});
ParseRelation relation = aData.getRelation("images"); relation.add(someImageObject); aData.saveInBackground();
如果有关于数据和图像之间关系的额外信息,关联类是一个很好的解决方案 - 例如,如果用户可以将图像标记为“我的一个最爱”。要解决此问题,请在Parse.com中创建一个名为ImageAssociation的新类。该类有三个属性:
我不会介绍这个解决方案的机制。在他的答案中关注Waquas的链接以获取一般信息。另请参阅有关“关系”的Parse.com文档。
答案 1 :(得分:0)
我无法准确地告诉你代码,但从数据库的角度来看,拥有多对多关系的表并不是一个好主意。为了解决许多&lt; - &gt;许多关系,你必须打破它们如下:
一个 - &gt;许多&lt; - 一个