私は既存のアプリケーションで、MVP
アーキテクチャに移行しています。 RecyclerView.Adapter
のうちの1つでは、ヘッダView
がどのように見えるかに関して、かなりの論理があります。 MVP
アーキテクチャによれば、そのようなロジックはPresenter
に移動され、発表者はのものをと表示するにはView
を使用する必要があります。また、プレゼンターにAndroid
のクラスがあるとどういうことがあるのか、それは基本的には何かが間違っていることを示しています。Android MVP - Androidクラスに依存してロジックを操作する方法は?
だから私の考えでは、これまでViewHolder
(MVP
観点からもView
)が作成されたときViewHolder
ためPresenter
を作成し、そこに私のロジックを移動させるためのものです。しかし、私が抱えている問題は、ロジックがPaint
、Rect
、Spannable
などのAndroid
クラスに基づいているということです。
どうすればこの問題をできるだけクリーンな方法で解決できますか?すべてのロジックをView
に移動しますか?または、ロジックを私のPresenter
に保持する必要がありますが、特定のAndroid
オブジェクトに関連する計算だけをView
に移動しますか?プレゼンターに
:それのようになります。一例として
ビューでdouble textLines = mView.getTextLines(text, 0 , text.length());
:
Paint paint = mTextView.getPaint();
Rect bounds = new Rect();
paint.getTextBounds(text, start, end, bounds);
double parentWidth = parentView.getWidth() - parentView.getPaddingLeft() - parentView
.getPaddingRight();
return Math.ceil((double) bounds.width()/parentWidth);
それとも別の良い方法はありますか?
確認していただきありがとうございます。うん、 'ViewHolder'自体にロジック/プレゼンターは必要ないと私は同意します。論理は結合のためのものであり、すなわち「アダプタ」のためのものである。もう一度ありがとう、非常に役立つ – vkislicins