Android如何推广一个类以供重用

时间:2017-09-04 07:36:08

标签: java android recycler-adapter code-reuse textwatcher

在我的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) {}}

从onBindViewHolder调用updatePosition ..我将edittext内容从afterTextChanged保存到数据模型。

我现在的情况是使用MyCustomEditTextListener作为内部类。但是在多个活动中需要相同的使用逻辑。如何重写该类,以便我不必在每个回收器适配器中复制它。

在afterTextChanged()方法中,我使用如下

modelList.get(位置).setQuantity(editable.toString());

其中modelList是' Model'的ArrayList。对象。但我的问题是每个Adapter中的Model类都不同。

2 个答案:

答案 0 :(得分:0)

您可以编写静态函数并返回TextWatcher

\MyProject\MyProject.Tests\bin\Debug

您可以将它与YourClassName.getTextWatcher()

一起使用

答案 1 :(得分:0)

不知何故,您将仅在视图持有者类中实现textwatcher。所以你可以写一个BaseViewHolder类,它可以是abstract,它可以根据你的需要,如果你想从子类中获取任何数据意味着你可以声明abstract }方法并将类设为abstract。将BaseViewHolder类作为要为其实现此逻辑的所有ViewHolder类的父类。如果您要在recyclerview中实现此逻辑,这将非常有用。

如果你想在activitiesrecyclerview中实现这个逻辑,那么你应该编写一个BaseActivity类,它将成为Activity的父类。 }。正如我所说,这个课程可以或不可以abstract,这取决于你的需要。

将您的代码放入该Base类广告中访问它。通过这种方式可以实现可重用性,如果您在单个位置进行更改,则会在所有其他类中受到影响。通过这种方式,你不会面对一个场景,它是在活动A中工作但不在活动B中工作。

希望这有用:)