LoginSignup
69
72

More than 5 years have passed since last update.

AndroidStudio で設定しておきたいコードテンプレート集

Posted at

Fragment

API Level 11 以降ならこちら。

#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "") package ${PACKAGE_NAME};#end

import android.app.Fragment;
import android.os.Bundle;

#parse("File Header.java")
public class ${NAME} extends Fragment {
    public static final String TAG = ${NAME}.class.getSimpleName();

    // Note: only the system can call this constructor by reflection. 
    public ${NAME}() {}

    public static ${NAME} getInstance() {
        ${NAME} fragment = new ${NAME}();
        Bundle args = new Bundle();
        fragment.setArguments(args);
        return fragment;
    }
}

サポートパッケージを使う場合は

#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "") package ${PACKAGE_NAME};#end

import android.support.v4.app.Fragment
import android.os.Bundle;

#parse("File Header.java")
public class ${NAME} extends Fragment {
    public static final String TAG = ${NAME}.class.getSimpleName();

    // Note: only the system can call this constructor by reflection. 
    public ${NAME}() {}

    public static ${NAME} getInstance() {
        ${NAME} fragment = new ${NAME}();
        Bundle args = new Bundle();
        fragment.setArguments(args);
        return fragment;
    }
}

データ構造を表す型

Parcelable を実装して Entity を作るとき。

#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "") package ${PACKAGE_NAME};#end

import android.os.Parcel;
import android.os.Parcelable;
import android.os.Parcelable.Creator;

#parse("File Header.java")
public class ${NAME} implements Parcelable{
    public static final String TAG = ${NAME}.class.getSimpleName();
    public static final Creator<${NAME}> CREATOR = new Creator<${NAME}>() {
        @Nullable
        @Override
        public ${NAME} createFromParcel(Parcel source) {
            return new ${NAME}(source);
        }

        @Override
        public ${NAME}[] newArray(int size) {
            return new ${NAME}[size];
        }
    }

    public ${NAME}(Parcel source) {

    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {

    }
}

Builder を使いたい場合は以下。

#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "") package ${PACKAGE_NAME};#end

import android.os.Parcel;
import android.os.Parcelable;
import android.os.Parcelable.Creator;

#parse("File Header.java")
public class ${NAME} implements Parcelable{
    public static final String TAG = ${NAME}.class.getSimpleName();
    public static final Creator<${NAME}> CREATOR = new Creator<${NAME}>() {
        @Nullable
        @Override
        public ${NAME} createFromParcel(Parcel source) {
            return new ${NAME}(source);
        }

        @Override
        public ${NAME}[] newArray(int size) {
            return new ${NAME}[size];
        }
    }

    // Note: only the builder of this type can call this constructor.
    private ${NAME} () {}

    public ${NAME}(Parcel source) {

    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {

    }

    public static class Builder {
        private final ${NAME} mTarget;

        public Builder() {
            mTarget = new ${NAME}();
        }

        public ${NAME} create() {
            return mTarget;
        }
    }
}

Utility

継承を禁止し、コンストラクタを封印、リフレクションで呼ばれたら例外にするなど。

#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "") package ${PACKAGE_NAME};#end
#parse("File Header.java")
public final class ${NAME} {
    private ${NAME}() {
        throw new AssertionError("constructor of the utility class should not be called");
    }
}

Loader

ベーシックなローダ

#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end

import android.support.v4.content.AsyncTaskLoader;

#parse("File Header.java")
public class ${NAME} extends AsyncTaskLoader<${RESULT}> {
    public static final String TAG = ${NAME}.class.getSimpleName();

    public ${NAME}(Context context) {
        super(context);
    }

    @Override
    public ${RESULT} loadInBackground() {
        return null;
    }

    @Override
    public void onStartLoading() {
        super.onStartLoading();
        forceLoad();
    }
}

ローカルキャッシュを効かせるなら

#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end

import android.support.v4.content.AsyncTaskLoader;

#parse("File Header.java")
public class ${NAME} extends AsyncTaskLoader<${RESULT}> {
    public static final String TAG = ${NAME}.class.getSimpleName();
    private ${CACHE_TYPE} mCache;

    public ${NAME}(Context context) {
        super(context);
    }

    @Override
    public ${RESULT} loadInBackground() {
        return null;
    }

    @Override
    public void deliverResult(${RESULT} data) {
        if (isReset()) {
            if (mCache != null) {
                mCache = null;
            }
            return;
        }

        mCache = data;

        if (isStarted()) {
            super.deliverResult(data);
        }
    }

    @Override
    public void onStartLoading() {
        if (this.result != null) {
            deliverResult(mCache);
        }
        if (takeContentChanged() || mCache == null) {
            forceLoad();
        }
    }

    @Override
    protected void onStopLoading() {
        super.onStopLoading();
        cancelLoad();
    }

    @Override
    protected void onReset() {
        super.onReset();
        onStopLoading();
    }
}
69
72
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
69
72