エントリー
こんにちは同僚。
今日は、Eclipse IDEの便利なテンプレートをいくつか紹介します。これは、Android向けに開発する際の日常的な操作の一部をスピードアップするのに役立ちます。 私はこれまでEclipseを開発に使用していますが、Ideaを使用するとまったく同じテンプレートを作成できると確信しています。
パターンとは何ですか? これらは、Ctrl +スペースを押すと、IDEがすぐに置き換えることができる事前に準備されたコードです。 たとえば、Eclipseで「syso」と入力し、Ctrl +スペースを押します。 バム、System.out.println()、または「fore」を取得しました-for eachループ用の既製のテンプレートがあります。 さらに、これらの要素はパラメータ化されており、IDEは必要な変数の名前を入力するように求めます。
興味があれば、始めましょう。
パターン
テンプレートにアクセスするには、Window-Preferences-Java-Templatesメニューを使用します。 既製のテンプレートのリストが表示され、独自のテンプレートを作成することもできます。
自分用に作成したテンプレートを見てみましょう。

テンプレートの名前には、一般的な接頭辞「at_」を付けましたが、これを都合の良いものに置き換えることができます。
ハンドラー(at_handler)
${:import (android.os.Handler, android.os.Message, java.lang.ref.WeakReference)} private static final class ${handler_name} extends Handler { private WeakReference<${enclosing_type}> ${outer}Ref; public ${handler_name}(${enclosing_type} ${outer}) { ${outer}Ref = new WeakReference<${enclosing_type}>(${outer}); } public void handleMessage(Message msg) { } }
この単純なテンプレートを使用すると、外部クラスに戻るリンクを持つ静的ハンドラーのブランクを即座に作成できます。 静的ではない内部クラスとしてハンドラーを作成することはお勧めできません。 これは、アクティビティのリークにつながる可能性があり、あなたの魂に対するリントの激しい憎しみを呼びます。
少し修正した後、AsyncQueryHandler(at_queryhandler)のテンプレートを取得します。
${:import (android.os.AsyncQueryHandler, android.content.ContentResolver, java.lang.ref.WeakReference)} private static final class ${handler_name} extends AsyncQueryHandler { private WeakReference<${enclosing_type}> ${outer}Ref; public ${handler_name}(ContentResolver cr, ${enclosing_type} ${outer}) { super(cr); ${outer}Ref = new WeakReference<${enclosing_type}>(${outer}); } }
パーセル可能(at_parcelable)
ご存じのとおり、Parcelableを作成するには、同じタイプのテンプレートアクションを実装する必要があります。 それらを自動化するとどうなりますか?
${:import (android.os.Parcel, android.os.Parcelable)} public static class ${parcelable_class} implements Parcelable { public int describeContents() { return 0; } public void writeToParcel(Parcel out, int flags) { // TODO: serialize your properties here } public static final Parcelable.Creator<${parcelable_class}> CREATOR = new Parcelable.Creator<${parcelable_class}>() { public ${parcelable_class} createFromParcel(Parcel in) { return new ${parcelable_class}(in); } public ${parcelable_class}[] newArray(int size) { return new ${parcelable_class}[size]; } }; private ${parcelable_class}(Parcel in) { // TODO: deserialize your properties here } }
このテンプレートを使用すると、次のクラス(at_creator)に対して、本格的なParcelableクラスを作成できます。
${:import (android.os.Parcel, android.os.Parcelable)} public int describeContents() { return 0; } public void writeToParcel(Parcel out, int flags) { // TODO: serialize your properties here } public static final Parcelable.Creator<${enclosing_type}> CREATOR = new Parcelable.Creator<${enclosing_type}>() { public ${enclosing_type} createFromParcel(Parcel in) { return new ${enclosing_type}(in); } public ${enclosing_type}[] newArray(int size) { return new ${enclosing_type}[size]; } }; private ${enclosing_type}(Parcel in) { // TODO: deserialize your properties here }
CREATORを既存のクラスにすばやく追加できます。
isEmpty(at_nisempty)
${:import (android.text.TextUtils)}!TextUtils.isEmpty(${cursor})
空の行のチェックをすばやく挿入できる非常にシンプルなテンプレート。
getView(at_getview)
以下は、ViewHolderを追加したアダプターでの典型的なgetViewの作成です。 具体的には、DevConf 2013でAlexandre Thomas(Android KickstartrおよびAndroidAnnotationsコントリビューターの著者)からこのテンプレートを学びました。
@Override public View getView(int position, View convertView, ViewGroup parent) { View v = convertView; if (v == null) { v = LayoutInflater.from(context).inflate(${layout_name}, null); ViewHolder h = new ViewHolder(); v.setTag(h); } ViewHolder holder = (ViewHolder) v.getTag(); return v; } static class ViewHolder { // ViewHolder fields }
おわりに
誰かがこれらのテンプレートを手伝って、開発をもう少し楽しくすることを願っています。 テンプレートについては、特別なgithub リポジトリを開始しました。新しいテンプレートが利用可能になり次第、補充を試みます。 templates.xmlファイルは、単にEclipseにインポートされます。
ご清聴ありがとうございました。