2016-07-25 9 views
-1

私はアプリケーション開発に新しく、リストビュー用のアダプタについては良いデザインパターンがあると思います。Android:複数のレイアウトを扱うときにcustomadapterを再利用する

私は質問に付随する特定のコード(少なくとも単純で明確なコードではありません)を持っていませんが、とにかく、ここに状況があります。

私は書籍のリストを表示したいアクティビティがあります。 "row.xml"というレイアウトに基づいて、このためにCustomAdapterを作成しました。このxmlにはTextViewとImageViewが含まれています。 次のように私はこの活動で私のCustomAdapterを作成します。

customAdapter = new ListAdapterFullList(this, R.layout.row, bookList.getList());

今、私は本のリストを表示するには、この活動を再利用したいのですが、レイアウトは今回異なることが必要です! "row_alt.xml"にする必要があります。 TextViewとImageViewの代わりに、このリストはTextViewとRatingBarを表示する必要があります。

私がここで直面している問題は明らかにアクティビティを再利用したいということです(表示する必要があるのは依然としてList of Booksですが、他のすべての動作は同じです)アダプターを取り扱います。このListAdapterFullListはなくImageViewののRatingBarを処理するために実装されていないため

customAdapter = new ListAdapterFullList(this, R.layout.row_alt, bookList.getList());

:私はちょうどこれを使用することはできません。

どうすればこの問題を回避できますか?このレイアウトを表示するために別のアダプタを作成する必要がありますか?もしそうなら、私は既存のアクティビティも変更する必要がありますが、私は方法はわかりません。

Btw、私はListViewの各行に異なるレイアウトを使用する必要がある問題についてたくさん読んでいますが、これは私が苦労しているものではありません。私はアダプタのための全く異なるレイアウトのアダプタを再利用したい。行自体は常に同じです。

ご迷惑をおかけして申し訳ありませんが、ご協力いただきありがとうございます。あなたはいつもより多くの情報を求めることができます!

答えて

0

row.xmlとrow_alt.xmlに2つの異なるウィジェットしかない場合は、2つの異なるアダプタを作成することをお勧めします。実際にこの2つのアダプター間で共通の動作がある場合は、共通の動作を実装する親クラスを作成し、2つのアダプターがこの親クラスを拡張するようにします。次に、各アダプタは独自の[getView()](​​、android.view.View、android.view.ViewGroup))メソッドを実装します。

さらに最適化を行うには、ViewHolderパターンを使用します。

また、ListViewの新しいバージョンであるRecyclerViewを見て、ViewHolderパターンは不要です。

関連する問題