[英]Override method (append to other methods) in this class from another java class
我想為另一個類的TextView
設置ClickableSpan
。 在ClickableSpan
我需要重寫兩個方法, updateDrawState()
和onClick()
。 前一種方法對於所有TextViews
都是相同的,但是后一種方法onClick()
對於任何TextView
都是不同的。 所以我只想一次(在Commons類中 )編寫updateDrawState()
方法,而不是任何TextView
。 我該如何實現?
以下代碼塊清楚地說明了我想要的:
public class Commons {
...
public void makeSpannable(TextView tv, String text, int startIndex, int endIndex, ClickableSpan appendClickableSpan) {
SpannableString span = new SpannableString(text);
span.setSpan({
@Override
public void updateDrawState(TextPaint ds) {
ds.setColor(ContextCompat.getColor(Activation.this, R.color.textViewClickable));
ds.setUnderlineText(false);
appendClickableSpan;
}}, startIndex, endIndex, 0);
tv.setMovementMethod(LinkMovementMethod.getInstance());
tv.setText(span, TextView.BufferType.SPANNABLE);
}
...
}
和
public class Main {
...
TextView textView = findViewById(R.id.textView1);
String text = "some sample text";
new Commons().makeSpannable(textView, text, 2, 6, new ClickableSpan() {
@Override
public void onClick(View widget) {
if (validator.checkValidation(tilCode)) ResendActivationEmail();
}
});
...
}
我不確定,如果我對您的理解正確,但是您可能想創建updateDrawState
方法和幾個onClick
通用實現。
您可以通過在抽象類中擴展ClickableSpan
並僅實現updateDrawState
實現此目的:
public abstract class MyClickableSpan extends ClickableSpan {
@Override
public void updateDrawState(TextPaint ds) {
// Your custom implementation
}
}
然后像這樣使用它:
ClickableSpan clickableSpan = new MyClickableSpan() {
@Override
public void onClick(View widget) {
// Your custom implementation
}
};
如果您堅持使用Commons
類,則可能使該方法靜態化:
public class Commons {
public static void makeTextViewSpannable(TextView tv, String text, int startIndex, int endIndex, MyClickableSpan span) {
SpannableString spannableString = new SpannableString(text);
spannableString.setSpan(span, startIndex, endIndex, 0);
tv.setMovementMethod(LinkMovementMethod.getInstance());
tv.setText(spannableString, TextView.BufferType.SPANNABLE);
}
}
用法:
Commons.makeTextViewSpannable(textView, text, startIndex, endIndex, new MyClickableSpan() {
@Override
public void onClick(View widget) {
// Your custom implementation
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.