gpt4 book ai didi

android - 多对多关系

转载 作者:行者123 更新时间:2023-11-30 03:10:19 25 4
gpt4 key购买 nike

我在 Parse.com 上有两个类(class):图像和数据。在数据类中,我保存了 3 个字段名称、手机号码和职业。在图像类中,我正在保存图像。

我必须在这两个类之间创建关系,以便我可以使用相应的手机号码获取图像。一个手机号可以保存多张图片,表格Data可以有多个手机号。

无法找到如何获取具有特定手机号码的图像。请帮忙,因为我已经阅读了文档。提前致谢。这是我的代码:

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();
}
}}

最佳答案

我不是 Android 开发人员,但我会尝试解决这个问题。您有两个类,数据和图像。 Data 的每个实例都可以关联到许多 Images。使每个 Data 实例唯一的信息是名为 Mobile-Number 的属性。

您有三个选择:1. Parse.com 数组2. Parse.com 关系3. 关联类(如 Waquas 所建议的)。

  1. Parse.com 数组 是一个很好的解决方案,如果数据实例链接到少于大约 50 张图像。当您将图像关联到数据时,请使用 Parse.com 的“添加”方法:
aData.add("images", someImageObject);
aData.saveInBackground();

可以一次性关联图像列表:

aData.addAll("images", Arrays.asList(image1, image2, image3));

当您从解析中检索数据实例时,图像对象显示为“指针”数组。要拉回实际的 Image 对象,请使用“fetch”。有关如何使用 fetch 的示例,请查找 Parse.com 文档的这一部分:

By default, when fetching an object, related ParseObjects are not fetched. These objects' values cannot be retrieved until they have been fetched like so:

fetchedComment.getParseObject("post")
.fetchIfNeededInBackground(new GetCallback<ParseObject>() {
public void done(ParseObject object, ParseException e) {
String title = post.getString("title");
}
});
  1. Parse.com 关系 比数组解决方案更具可扩展性。如果单个数据与成百上千个图像相关联,这是正确的解决方案。我已经开始在自己的代码中将我的数组切换为关系。
    ParseRelation relation = aData.getRelation("images");        relation.add(someImageObject);         aData.saveInBackground();
  1. 如果有关于数据和图像之间关系的额外信息,关联类是一个很好的解决方案——例如,如果用户可以将图像标记为“我的其中之一”收藏”。要解决此问题,请在 Parse.com 中创建一个名为 ImageAssociation 的新类。该类具有三个属性:

    • theDataObject(或只是 Data 对象的手机号码)
    • 图像对象
    • 是最喜欢的(真或假)

我不会深入探讨此解决方案的机制。按照 Waquas 在他的回答中的链接获取一般信息。另请参阅有关“关系”的 Parse.com 文档。

关于android - 多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21110853/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com