Что я по существу построил - это EditTextView, который собирает String, который при вводе пользователем пытается связаться с внутренним контентом, чтобы вытащить пользовательский " objectId ", это столбец в моей базе данных User.Поиск по сайту (Android) - Поиск по прямой ссылке
Функция showProfileActivity(), показанная ниже, просто работает, и я исключил ее, потому что она не имеет отношения к проблеме. Он принимает «objectId» пользователя и показывает профиль пользователя.
Что я хочу для «String userId», который является «ObjectId» пользователя в базе данных, который будет генерироваться динамически. Я знаю, что функция showProfileActivity() работает, потому что я могу буквально просто вводить String с жестко закодированным objectId, и это приводит меня к профилю этого пользователя.
Вопрос, на основе ввода строки пользователем в поле поиска, как я могу получить значение в соответствующем столбце «objectId»?
findViewById(R.id.submitSearch).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EditText searchUserTextField = (EditText) findViewById(R.id.searchUserTextField);
// Value input to search field
final String searchInput = searchUserTextField.getText().toString();
// System.out.println(searchInput);
// Initiate ParseQuery
final ParseQuery<ParseUser> query = ParseQuery.getQuery("username");
// Look for the username that was typed into the search field
query.whereEqualTo("username", searchInput);
query.findInBackground(new FindCallback<ParseUser>() {
public void done(List<ParseUser> objects, ParseException e) {
if (e == null) {
// The query was successful.
// This works but clearly always loads the exact same user profile. I need this string to be loaded dynamically as a function of the user's search query.
String userId = "dj16qsXPle";
// System.out.println(userId);
showProfileActivity(userId);
} else {
// Something went wrong.
}
}
});
// Execute RemoteDataTask AsyncTask
new RemoteDataTask().execute();
}
});
}
Хм ... Очень близко, кажется, но я получаю исключение IndexOutOfBoundsException. java.lang.IndexOutOfBoundsException: Недопустимый индекс 0, размер равен 0. Что это может означать? – drearypanoramic
Это означает, что пользователей не совпадают. Позвольте мне отредактировать для вас очень быстро. Убедитесь, что вход пользователя username существует в базе данных Parse и попробуйте тот, который существует. Также добавьте измененный код после того, как я отредактировал –
Да, он возвращает пустой список, что действительно странно, поскольку эти имена пользователей просто должны существовать. I/System.out: [] – drearypanoramic