【问题标题】:Spannable string not clickable in a custom ListView在自定义 ListView 中不可点击的可扩展字符串
【发布时间】:2016-09-04 13:53:00
【问题描述】:

ListView 中的一行上使用按钮,并且能够从数据库中创建单行 Spannable 和数据,但是当我单击它时没有响应单击此处是我来自 MyAdapter Class 的代码,我正在从数据库中输入值给Listview

public View getView(int i, View view, ViewGroup viewGroup) {
    Realm realm=Realm.getDefaultInstance();
    Word toEdit = realm.where(Word.class)
            .equalTo("id", 10).findFirst();
    int id_to_seperate=toEdit.getLang();

    LayoutInflater inflater= (LayoutInflater) Main.context.getSystemService(Main.context.LAYOUT_INFLATER_SERVICE);
   View row= inflater.inflate(R.layout.layout,viewGroup,false);
    TextView word= (TextView) row.findViewById(R.id.word_name);
    TextView meaning= (TextView) row.findViewById(R.id.word_define);
    Word temp=list.get(i);
    int idz=temp.getId();
    word.setText(temp.getWord());
    if(id_to_seperate==idz){
        String span[] = temp.getMeaning().substring(1).split(" ") ;
        SpannableString ss = new SpannableString(temp.getMeaning().substring(1));
        ClickableSpan spans[] = new ClickableSpan[span.length];
        for(int spanCount = 0 ; spanCount < span.length ; spanCount++){
            spans[spanCount] = new ClickableSpan() {
                @Override
                public void onClick(View textView) {

                    TextView v = (TextView)textView ;
                    String text = v.getText().toString() ;

                    Log.d("View" , text);
                }
            };
        }

        int start = 0 ;
        int end =0;
        try {
            for(int spanCount = 0 ; spanCount <span.length ; spanCount++){
                if(spanCount==0) {
                    end += span[spanCount].length();
                }else{

                    end += span[spanCount].length()+1;
                }
                ss.setSpan(spans[spanCount], start, end , Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
                start += span[spanCount].length()+1;

            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        meaning.setText(ss);

    }else {
        meaning.setText(temp.getMeaning().substring(1));
    }
    return row;
}

能够从列表中的特定行获取结果
对此但单击功能不起作用,如果有人能告诉我我犯了什么错误,我将不胜感激
问候

【问题讨论】:

  • 你想设置点击到TextView word吗??
  • @Naz141 没有TextView的意思
  • 我的意思是你想点击TextVIew吗?
  • 是的,我想解决可点击的文本视图

标签: java android listview spannablestring


【解决方案1】:

return之前添加

meaning.setMovementMethod(LinkMovementMethod.getInstance());

此方法在链接上启用 clicable。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-09
    相关资源
    最近更新 更多