我想要做的是將用戶列表轉換爲字符串,然後單擊將所選字符串傳遞給下一個活動。我在應用程序上使用的消息傳遞功能上嘗試了這一功能,並且它工作正常。現在我正在嘗試使用圖庫功能。本節應該做的是找到解析中的所有用戶,將它們轉換爲字符串並將它們顯示在列表視圖中。單擊它應該收集列表上的字符串,並在圖庫視圖活動中使用它來顯示用戶名與列表中所選圖像相同的所有圖像。如何將字符串從一個活動中的列表傳遞到另一個
ListUserActivity
列表保存在數據庫中的所有用戶名的視圖。
//display clickable a list of all users
private void setConversationsList() {
currentUserId = ParseUser.getCurrentUser().getObjectId();
names = new ArrayList<String>();
ParseQuery<ParseUser> query = ParseUser.getQuery();
query.whereNotEqualTo("objectId", currentUserId);
query.findInBackground(new FindCallback<ParseUser>() {
public void done(List<ParseUser> userList, com.parse.ParseException e) {
if (e == null) {
for (int i=0; i<userList.size(); i++) {
names.add(userList.get(i).getUsername().toString());
}
usersListView = (ListView)findViewById(R.id.usersListView);
namesArrayAdapter =
new ArrayAdapter<String>(getApplicationContext(),
R.layout.user_list_item, names);
usersListView.setAdapter(namesArrayAdapter);
usersListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int i, long l) {
openConversation(names, i);
}
});
} else {
Toast.makeText(getApplicationContext(),
"Error loading user list",
Toast.LENGTH_LONG).show();
}
}
});
}
單擊列表視圖上的名稱會發生什麼情況。
public void openConversation(ArrayList<String> names, int pos) {
ParseQuery<ParseUser> query = ParseUser.getQuery();
query.whereEqualTo("username", names.get(pos));
query.findInBackground(new FindCallback<ParseUser>() {
public void done(List<ParseUser> user, com.parse.ParseException e) {
if (e == null) {
// Intent intent = new Intent(getApplicationContext(), GridActivity.class);
Intent intent = new Intent(ListUsersActivity.this, GridActivity.class);
intent.putExtra("RECIPIENT_ID", user.get(0).getObjectId());
startActivity(intent);
} else {
Toast.makeText(getApplicationContext(),
"Error finding that user",
Toast.LENGTH_SHORT).show();
}
}
});
}
GalleryActivity
我已經盡力了RECIPIENT_ID轉換成稱爲一個字符串變量recipientId和行query.whereEqualTo("username", recipientId);
添加它,但它使創建一條消息,告訴我它是NULL 。
@Override
protected Void doInBackground(Void... params) {
// Create the array
Intent intent = getIntent();
recipientId = intent.getStringExtra("RECIPIENT_ID");
currentUserId = ParseUser.getCurrentUser().getObjectId();
phonearraylist = new ArrayList<PhoneList>();
try {
ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("ImageUpload");
usernametxt = usernameimgshow.getText().toString();
//query.whereEqualTo("username", userstr);
query.whereEqualTo("username", recipientId);
query.orderByAscending("createdAt");
ob = query.find();
for (ParseObject country : ob) {
ParseFile image = (ParseFile) country.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;
}