android如何通用化类以供重用

x8diyxa7  于 2021-07-03  发布在  Java
关注(0)|答案(2)|浏览(273)

在我的android代码中,我需要在recyclerview中放置一个edittext并保存使用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) {}}

updateposition是从onbindviewholder调用的。。我将edittext内容从aftertextchanged保存到数据模型中。
我现在的情况是使用mycustomedittextlistener作为内部类。但在多个活动中需要相同的使用逻辑。如何重写类,以便不必在每个回收器适配器中复制它。
在exterTextChanged()方法中,我使用如下内容
modellist.get(position).setquantity(editable.tostring());
其中modellist是“model”对象的arraylist。但我的问题是,每个适配器中的模型类是不同的。

tvz2xvvm

tvz2xvvm1#

您可以编写一个静态函数并返回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) {}
    };

}

您可以将它与classname.gettextwatcher()一起使用

pxyaymoc

pxyaymoc2#

无论如何,你会实现 textwatcher 仅在视图持有者类中。所以你最好能写一个 BaseViewHolder 可以或不能是的类 abstract 它基于您的需要,如果您想从子类中获取任何数据,那么您可以声明 abstract 方法并使类 abstract . 使 BaseViewHolder 类作为所有 ViewHolder 要为其实现此逻辑的类。如果要在中实现此逻辑,这将很有帮助 recyclerview .
如果你想在两者中都实现这个逻辑 activities 以及 recyclerview 意思是,你应该写一个 BaseActivity 类,它将是您的 Activity . 就像我说的,这门课能不能 abstract ,可以满足您的需要。
把你的代码放在基类中,然后访问它。通过这种方式可以实现可重用性,如果在一个地方进行更改,那么其他所有类中的更改都会受到影响。这样你就不会面对一个场景,它在活动a中起作用,但在活动b中不起作用。
希望这有帮助:)

相关问题