Я пытаюсь реализовать комментарий, например список, в котором вы можете упомянуть других пользователей в комментариях, а затем иметь возможность щелкнуть по нему, чтобы перейти к их профилю. Например, при публикации комментария на Reddit вы можете упомянуть другого пользователя с помощью /u/username.
Единственная проблема, с которой я сталкиваюсь, заключается в том, как сделать так, чтобы я мог щелкнуть текст, чтобы загрузить профиль этого пользователя.
Для списка комментариев у меня, по сути, есть собственный список текстовых представлений. Погуглив вокруг, я увидел, что можно щелкнуть текст в текстовом представлении, используя интерактивный диапазон. Однако мне не удалось заставить это работать в списке текстовых представлений. Кто-нибудь может помочь?
Это соответствующие разделы моего кода:
Интерактивный диапазон, который я объявил как переменную-член:
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(View widget) {
Intent intent = new Intent(context, ProfileActivity.class);
// ParseUser.getQuery().whereEqualTo(Constants.kQollegeUserPreferredUsernameKey, sta)
intent.putExtra("User", ParseUser.getCurrentUser().getObjectId());
context.startActivity(intent);
}
};
Внутри getView:
TextView answer_text_view = answerView.getAnswerTextView();
String text = answer.getAnswerText();
if(text.contains("@")) {
text += " ";
final SpannableStringBuilder sb = new SpannableStringBuilder(text);
List<Integer> start = new ArrayList<>();
int index = text.indexOf("@");
while (index >= 0) {
start.add(index);
index = text.indexOf("@", index + 1);
}
for(int i = 0; i<start.size(); i++){
sb.setSpan(fcs, start.get(i), text.indexOf(" ", start.get(i)), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
sb.setSpan(clickableSpan, start.get(i), text.indexOf(" ", start.get(i)), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
answer_text_view.setText(sb);
}