gpt4 book ai didi

java - 将标签添加到 ClickableSpan

转载 作者:行者123 更新时间:2023-11-29 05:20:56 24 4
gpt4 key购买 nike

我正在尝试将数据存储在 ClickableSpan 中,就像它可以通过 setTag() 和其他类型的元素来完成一样。

我在 stackoverflow 中读到了这个答案: SpannableString - setTag

它清楚地写着:- 创建您自己的包含所需数据的 ClickableSpan 子类,并将其应用于您的 SpannableString。- 当您创建 ClickableSpan 并通过数据成员将一个词附加到它时,您将可以在 onClick() 中访问该数据

但我还是个新手,不知道如何编写代码。

我正在使用一个扩展 ClickableSpan 的类来创建我的可点击跨度:

// CLASS BEING IMPORTED
public abstract class TouchableSpan extends ClickableSpan {

// IMPLEMENT SET TAG FUNCTION HERE??

}

// CODE ON ACTIVITY
TouchableSpan touchableSpan = new TouchableSpan() {

@Override
public void onClick(View widget) {
this.setPressed(true);

// GET TAG INFO HERE. BUT HOW?
}

// SET TAG HERE? BUT HOW?

private boolean mIsPressed;

public void setPressed(boolean isSelected) {
mIsPressed = isSelected;
}

@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setColor(Color.BLACK);
ds.bgColor = mIsPressed ? selectedHlColor : 0xffeeeeee;
ds.setUnderlineText(false);
}
}

spannablesstringbuilder.setSpan(touchableSpan, index+2, index2, 0);

评论:我知道我最好在我链接的问题的评论部分要求澄清,但我没有足够的声誉来这样做。

最佳答案

我认为解决方案是在您的自定义类中使用自定义函数,类似这样的方法可行

// CLASS BEING IMPORTED
public abstract class TouchableSpan extends ClickableSpan {

// IMPLEMENT SET TAG FUNCTION HERE??

//COMMENT: YES, LIKE THIS: CAN BE ANY FUNCTION U LIKE

private String myCustomVar;

public String getMyVar(){
return this.myCustomVar;
}

public void setMyVar(String myVari){
this.myCustomVar = myVari;
return;
}

}

// CODE ON ACTIVITY
TouchableSpan touchableSpan = new TouchableSpan() {

@Override
public void onClick(View widget) {
this.setPressed(true);

// GET TAG INFO HERE. BUT HOW?

//COMMENT: LIKE THIS:

String extravar = touchableSpan.getMyVar();
Log.d("TEST", extravar);
}

// SET TAG HERE? BUT HOW?

COMMENT: NOT HERE. SEE BELOW

private boolean mIsPressed;

public void setPressed(boolean isSelected) {
mIsPressed = isSelected;
}

@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setColor(Color.BLACK);
ds.bgColor = mIsPressed ? selectedHlColor : 0xffeeeeee;
ds.setUnderlineText(false);
}
}

//COMMENT: SET YOUR VARIABLE/TAG HERE:

touchableSpan.setMyVar("HOLALA");

spannablesstringbuilder.setSpan(touchableSpan, index+2, index2, 0);

关于java - 将标签添加到 ClickableSpan,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24792353/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com