android - ListView 中的可点击范围

标签 android listview spannablestring

我正在尝试实现一个类似列表的评论,您可以在评论中提到其他用户,然后可以点击它转到他们的个人资料。例如,在 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/

相关文章:

java - RXJava 2 多个订阅者轮询

android - 在现有的 React Native iOS 项目中安装 React-Native Android?

android - 如何在包含不同大小文本的 TextView 中垂直居中文本?

java - "style="?textTitle"是什么意思,它是如何工作的?

java - Listview android 值在滚动中混淆

android - ListView 将项目添加到底部(android)

Android Listview 降低滚动速度

android - 为 RecyclerView 缓存 Spannable 字符串

android - 如何在 TextView 文本中为 word 设置自定义字体

Android 模拟器找不到我的 Java 类?