Uma ótima forma de melhorar a produtividade na hora de criar uma aplicação é automatizar o trabalho repetitivo. Pense por exemplo que algo muito comum de ser utilizado em qualquer aplicação são as listas, e toda vez que for criar uma você precisará reescrever o mesmo código, ou para alguém como eu copiar uma classe pronta e adapta-la a minha necessidade.
Existe uma forma mais inteligente para casos como estes, você pode criar um arquivo template no Android Studio com o mínimo de código pronto para você trabalhar e adaptar para a necessidade da aplicação.

No exemplo deste post vou criar um template para um adapter de um recyclerview. Clique com o botão direito em cima de um pacote da sua aplicação vá em “New” e clique em “Edit File Templates…”, clique no botão “+” no canto superior esquerdo para criar um novo modelo, vou chama-lo de RecyclerViewAdapter, na área abaixo você poderá escrever o seu código.

Existem algumas variáveis que você poderá utilizar para ser substituído quando for criar o arquivo, como:
${NAME}
${PACKAGE_NAME}
${DATE}

Você pode definir variáveis para serem usadas no seu código, vamos usar uma variável para nomear nosso ViewHolder ${VIEWHOLDER_CLASS} e uma para o tipo do List que nosso adapter vai utilizar ${ITEM_CLASS}

O código de exemplo que usarei é este:


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

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import java.util.List;

#parse("File Header.java")
public class ${NAME} extends RecyclerView.Adapter {
private final Context context;
private List items;

public ${NAME}(List items, Context context) {
this.items = items;
this.context = context;
}

@Override
public ${VIEWHOLDER_CLASS} onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.${LAYOUT_RES_ID}, parent, false);
return new ${VIEWHOLDER_CLASS}(v);
}

@Override
public void onBindViewHolder(${VIEWHOLDER_CLASS} holder, int position) {
${ITEM_CLASS} item = items.get(position);
//TODO Fill in your logic for binding the view.
}

@Override
public int getItemCount() {
if (items == null){
return 0;
}
return items.size();
}

public class ${VIEWHOLDER_CLASS} extends RecyclerView.ViewHolder {
CircularProgressButton mButtonAction;

public ${VIEWHOLDER_CLASS}(View itemView) {
super(itemView);
}
}
}

Quando você for utilizar esse modelo será solicitado que seja preenchido os campos das variáveis que estamos usando no código de exemplo
Screen Shot 2016-07-22 at 18.22.23

Para usar o modelo criado é só clicar com o botão direito em cima do pacote que deseja, ir na opção “New” e clicar em “RecyclerViewAdapter”. Espero ter ajudado com esta dica, crie modelos e seja mais produtivo, se você já usa templates compartilhe-os conosco!