ListView中的可单击范围

时间:2015-10-04 05:54:08

标签: android listview spannablestring

我正在尝试实施类似于列表的评论,您可以在评论中提及其他用户,然后可以点击它来转到他们的个人资料。例如,在reddit上发布评论时,您可以使用/ u / username提及另一个用户。

我遇到的一个问题是如何制作它以便我可以点击文本来加载该用户的个人资料。

对于评论列表,我基本上有一个自定义的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);
    }

1 个答案:

答案 0 :(得分:1)

我已在textview中应用了以下内容,其中存在可点击范围以使其正常工作

textView.setMovementMethod(LinkMovementMethod.getInstance());