我有一个简单的应用程序,用户注册并登录,我希望他们能够搜索其他用户。
我正在使用parse.com存储我的用户及其详细信息,并且一直在寻找一种搜索用户的方式(使用姓名,电话号码,电子邮件等)并在列表视图中显示所有内容,但我空洞了。大多数答案和教程都涉及使用ParseQueryAdapter,但看起来该类不再包含在SDK中。
有没有人有这方面的经验?
感谢您的时间
编辑:我一直在搞乱ParseQuery,试图获得一些东西。这就是我到目前为止所做的: searchButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
ParseQuery<ParseUser> query = ParseUser.getQuery();
//TODO search function
query.whereContains("name", searchText.getText().toString().trim());
query.findInBackground(new FindCallback<ParseUser>() {
@Override
public void done(List<ParseUser> objects, ParseException e) {
if (e == null) {
Log.d("Brand", "Retrieved " + objects.size() + " Brands");
for (ParseObject dealsObject : objects)
{
Log.i("USERNAME", dealsObject.getString("name"));
// use dealsObject.get('columnName') to access the properties of the Deals object.
}
} else {
Log.d("Brand", "Error: " + e.getMessage());
}
}
});
}
});
此代码将搜索结果的数量以及每个测试结果的“name”属性输出到日志。
此外,我已经为列表视图中的每个项目制作了一个布局,其中包含姓名,电子邮件,电话号码和此类详细信息。早些时候,在我开始使用Parse之前,我使用的是本地MySQL数据库来存储我的用户。然后我会搜索返回JsonArray的用户,并将每个属性放入一个自定义的“searchresult”对象中,该对象具有搜索属性的get()和set()方法。之后,我有一个ArrayAdapter,我将结果添加到。这种方法效率低下,特别是因为我不是PHP和Json的专家。
答案 0 :(得分:0)
你可以这样尝试
query.whereContains("name", searchText.getText().toString().trim());
query.whereContains("phone", searchText.getText().toString().trim());
query.whereContains("emails", searchText.getText().toString().trim());
答案 1 :(得分:0)
找到了一种方法。首先,搜索匹配任何字段的任何用户:
String searchParams = searchText.getText().toString().trim();
if(!searchParams.isEmpty()) {
final ArrayList<SearchResults> searchResults = new ArrayList<SearchResults>();
listAdapter = new ListAdapter(activityContext, searchResults);
listView.setAdapter(listAdapter);
ParseQuery<ParseUser> queryName = ParseUser.getQuery();
queryName.whereContains("name", searchParams);
ParseQuery<ParseUser> queryPhone = ParseUser.getQuery();
queryPhone.whereContains("username", searchParams);
ParseQuery<ParseUser> queryEmail = ParseUser.getQuery();
queryEmail.whereContains("email", searchParams);
ParseQuery<ParseUser> querySurname1 = ParseUser.getQuery();
querySurname1.whereContains("surname1", searchParams);
ParseQuery<ParseUser> querySurname2 = ParseUser.getQuery();
querySurname2.whereContains("surname2", searchParams);
List<ParseQuery<ParseUser>> queries = new ArrayList<ParseQuery<ParseUser>>();
queries.add(queryName);
queries.add(queryPhone);
queries.add(queryEmail);
queries.add(querySurname1);
queries.add(querySurname2);
ParseQuery<ParseUser> mainQuery = ParseQuery.or(queries);
mainQuery.findInBackground(new FindCallback<ParseUser>() {
@Override
public void done(List<ParseUser> objects, ParseException e) {
if (e == null)
{
Log.d("Brand", "Retrieved " + objects.size() + " Brands");
for (ParseObject dealsObject : objects) {
Log.i("USERNAME", dealsObject.getString("name"));
Log.i("PRIVATE", Integer.toString(dealsObject.getInt("private")));
SearchResults sr1 = new SearchResults();
sr1.setName(dealsObject.getString("name"));
sr1.setSurname1(dealsObject.getString("surname1"));
sr1.setSurname2(dealsObject.getString("surname2"));
sr1.setUid(dealsObject.getObjectId());
Log.d("UID",dealsObject.getObjectId());
if(dealsObject.getInt("private") == 0)
{
sr1.setEmail(dealsObject.getString("email"));
sr1.setPhone(dealsObject.getString("username"));
}
else
{
sr1.setPhone("xxx-xxx-xxx");
sr1.setEmail("xxxxxx@xxxxx.xxx");
}
searchResults.add(sr1);
}
} else {
Log.d("Brand", "Error: " + e.getMessage());
}
listAdapter.notifyDataSetChanged();
我的SearchResults类:
public class SearchResults
{
private String name = "";
private String surname1 = "";
private String surname2 = "";
private String phone = "";
private String email = "";
private Bitmap image;
private String uid = "";
public String getEmail() {
return email;
}
public String getName() {
return name;
}
public String getPhone() {
return phone;
}
public void setEmail(String email) {
this.email = email;
}
public void setName(String name) {
this.name = name;
}
public void setPhone(String phone) {
this.phone = phone;
}
public Bitmap getImage() {
return image;
}
public void setImage(Bitmap image) {
this.image = image;
}
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public String getSurname1() {
return surname1;
}
public String getSurname2() {
return surname2;
}
public void setSurname1(String surname1) {
this.surname1 = surname1;
}
public void setSurname2(String surname2) {
this.surname2 = surname2;
}
}