我正在尝试实现一个类似列表的评论,您可以在评论中提到其他用户,然后可以点击它转到他们的个人资料。例如,在 reddit 上发表评论时,您可以使用/u/username 提及另一个用户。
我遇到的一个问题是如何制作它以便我可以单击文本以加载该用户的配置文件。
对于评论列表,我基本上有一个自定义的 TextView 列表。通过谷歌搜索,我发现可以使用可点击范围点击 TextView 中的某些文本。但是,我无法在 TextView 列表中使用它。有人可以帮忙吗?
这是我的代码的相关部分:
我声明为成员变量的可点击范围:
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);
}
最佳答案
我已将以下应用到存在可点击跨度的 TextView 以使其工作
textView.setMovementMethod(LinkMovementMethod.getInstance());
关于android - ListView 中的可点击范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32930471/