[英]Android How can i generalize a Class for reuse
在我的android代码中,我需要将edittext放入recyclerview并保存使用TextWatcher输入的值。 为此,我使用了此处建议的自定义TextWatcher。
private class MyCustomEditTextListener implements TextWatcher {
int position;
public void updatePosition(int position)
{
this.position=position;
}
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i2,
int i3) {}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i2,
int i3) {}
@Override
public void afterTextChanged(Editable editable) {}}
从onBindViewHolder ..调用updatePosition,我将aftertextChanged中的edittext内容保存到数据模型中。
我现在的情况是我将MyCustomEditTextListener用作内部类。 但是在多个活动中需要相同的用法逻辑。 我如何重写该类,这样我就不必在每个回收站适配器中都重复它。
在afterTextChanged()方法中,我使用如下所示的内容
modelList.get(position).setQuantity(editable.toString());
其中modelList是“模型”对象的ArrayList。 但是我的问题变成了每个适配器中的Model类都不同。
您可以编写一个静态函数并返回TextWatcher
public static TextWatcher getTextWatcher(){
return new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) {}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i2,
int i3) {}
@Override
public void afterTextChanged(Editable editable) {}
};
}
您可以将其与YourClassName.getTextWatcher()一起使用
您将以某种方式textwatcher
在视图持有器类中实现textwatcher
。 更好的方法是根据您的需要编写一个BaseViewHolder
类,该类可以根据您的需要进行abstract
,如果要从子类中获取任何数据,则可以声明一个abstract
方法并使该类成为abstract
。 使BaseViewHolder
类成为要为其实现此逻辑的所有ViewHolder
类的父类。 如果您要在recyclerview
实现此逻辑,这将很有帮助。
如果要在activities
和recyclerview
方法中都实现此逻辑,则应该编写一个BaseActivity
类,它将作为Activity
的父类。 正如我所说的,该类可以是abstract
,也可以不是abstract
,这取决于您的需要。
将您的代码放入该基类广告中即可对其进行访问。 这样,就可以实现可重用性,并且如果您在单个位置进行更改,那么所有其他类都将受到影响。 通过这种方式,您将不会遇到一种情况,它在活动A中有效,但在活动B中却没有。
希望这会有所帮助:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.