リストスクリーンレットの並べ替え
ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、こちらまでご連絡ください。
リストScreenletを並べ替えるには、ポータルの コンパレータクラス をポイントする必要があります。 コンパレータクラスは、エンティティを並べ替えるロジックを実装します。 独自のコンパレータクラスを作成するか、ポータルに既に存在するコンパレータクラスを使用できます。 リストを並べ替えたら、セクションに分割できます。 このチュートリアルでは、コンパレータを使用してリストスクリーンレットを並べ替え、並べ替えられたリストのセクションを作成する方法を示します。
最初に、コンパレータを使用してリストのスクリーンレットを並べ替える方法を学習します。
コンパレータを使用する
コンパレーターを使用するには、リストScreenletの obcClassName
プロパティをコンパレーターの完全修飾クラス名に設定する必要があります。 他のScreenletプロパティを設定するのと同じように、アプリにScreenletを挿入するときにInterface Builderでこれを行います。 たとえば、サンプルのブックマークリストスクリーンレットを設定して、ブックマークのリストをURLでソートするには、Interface Builderで Obcクラス名 から com.liferay.bookmarks.util.comparator.EntryURLComparator を設定する必要があります。
それでおしまい\! すべてのリストのscreenletsが継承するが、注意することを obcClassName
からプロパティを BaseListScreenlet
クラス、リストScreenletも、このプロパティを使用してそのサービス呼び出しを行う必要があります。 Liferay Screensに含まれるスクリーンレットが obcClassName
プロパティをサポートするリストを確認するには、 スクリーンレットリファレンスドキュメント を参照してください。 また、Liferay DXPのコンパレータクラスはバージョン間で変更される可能性があります。 これらのコンパレータのいずれかを使用している場合は、Liferay DXPバージョンに一致するコンパレータを指定してください。
リストのセクションを作成する
リストを類似の要素を含むセクションに分割することは、iOSアプリでは一般的です。 リストスクリーンレットでこれを行うには、まずコンパレーターを使用して、セクションの作成に使用する基準でリストを並べ替えます。 次に、リストScreenletのInteractorで BookmarkListPageLoadInteractor
クラスの sectionForRowObject
メソッドをオーバーライドします。 このメソッドは、リスト内の各アイテムに対して呼び出され、セクションにアイテムを配置するために必要な情報を返す必要があります。 例えば、 サンプルブックマーク一覧Screenletのインターアクター オーバーライド sectionForRowObject
ホスト名によるグループ業績への方法:
public override func sectionForRowObject(object: AnyObject) -> String? {
guard let bookmark = object as? Bookmark else {
return nil
}
let host = NSURL(string: bookmark.url)?.host?.lowercaseString
return host?.stringByReplacingOccurrencesOfString("www.", withString: "")
}
これは、前のセクションで説明したように、ブックマークリストスクリーンレットが EntryURLComparator
ソートされている場合にのみ、予測可能な結果を生成することに注意してください。
そして、それだけです! これで、リストスクリーンレットのリストを並べ替えてセクション化する方法がわかりました。