强大的Android Studio之省时开发--代码模板

在写有关RecyclerView方面的代码的时候,每次都要自己写适配器,而且适配器的大体结构都一样,但是在android studio中却不能一键创建适配器。如果有可以快速创建适配器,并且需要传入的类型由我们自己控制,其他的一些重写的方法自动生成,那这样不就能节省了一些重复的操作了嘛,省时又省力。

先来看一下图先:

创建出来的适配器类:

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyHolder> {
    private Context mContext;
    private List<String> mStrings;
    private LayoutInflater mLayoutInflater;
    private OnStringItemClickListener mOnStringItemClickListener;

    public void setOnStringItemClickListener(OnStringItemClickListener onStringItemClickListener) {
        mOnStringItemClickListener = onStringItemClickListener;
    }

    public MyAdapter(Context context, List<String> mStrings) {
        mContext = context;
        this.mStrings = mStrings;
        mLayoutInflater = LayoutInflater.from(mContext);
    }

    @Override
    public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = mLayoutInflater.inflate(, parent, false);//加载Item布局
        return new MyHolder(view);
    }

    @Override
    public void onBindViewHolder(MyHolder holder, int position) {

    }

    @Override
    public int getItemCount() {
        return mStrings.size();
    }

    class MyHolder extends RecyclerView.ViewHolder {
	//这里写Item的控件
        public MyHolder(View itemView) {
            super(itemView);
        }
    }

    interface OnStringItemClickListener {//自定义点击时间回调,根据需要决定
        void onStringClick(View v, int position);
    }
}
这样我们不用在手动写实现RecyclerView.Adapter和继承RecyclerView.ViewHolder,Item的类型等,只需要关注于加载Item布局,还有数据的适配了。

是不是很方便?接下来就来说怎么做这种代码模板。


依次打开 file --> Settings,找到File and Code Templates,如图:


像上面那样的适配器模板代码:

#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("myCustomFileHeader.java")//这是一个类的描述,比如类名称,创建时间,创建者等信息,这也是可以自定义的
public class ${NAME} extends RecyclerView.Adapter<${NAME}.${ViewHolder}Holder>{//${NAME}就是一开始输入的类名,MyAdapter
private Context mContext;
    private List<${MyBean}> m${MyBean}s;//Item类型,在上面的截图中可以看到的,是可以输入的,上面输入的是String
    private LayoutInflater mLayoutInflater;
    private On${MyBean}ItemClickListener mOn${MyBean}ItemClickListener;
    public void setOn${MyBean}ItemClickListener(On${MyBean}ItemClickListener on${MyBean}ItemClickListener){
        mOn${MyBean}ItemClickListener = on${MyBean}ItemClickListener;
    }
    public ${NAME}(Context context, List<${MyBean}> m${MyBean}s) {
        mContext = context;
        this.m${MyBean}s = m${MyBean}s;
        mLayoutInflater = LayoutInflater.from(mContext);
    }

    @Override
    public ${ViewHolder}Holder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = mLayoutInflater.inflate(,parent,false);
        return new ${ViewHolder}Holder (view);
    }

    @Override
    public void onBindViewHolder(${ViewHolder}Holder holder, int position) {
        
    }

    @Override
    public int getItemCount() {
        return m${MyBean}s.size();
    }

    class ${ViewHolder}Holder extends RecyclerView.ViewHolder{//同理,这个 ${ViewHolder}也是可以输入的,上面输入的是MY

        public ${ViewHolder}Holder(View itemView) {
            super(itemView);
        }
    }
    interface On${MyBean}ItemClickListener{//这里是自定义的回调接口,作为每个Item点击事件的回调,这个根据需要要决定就行了。
        void on${MyBean}Click(View v,int position);
    }
}
注:${NAME},${MyBean},${ViewHolder},看到这三个的写法了吗,其实我们需要手动输入的变量就可以使用这种   ${xxx}  的写法了,任你自定义。

编辑好自己的代码模板后,apply一下,就可以使用了。

看下来是不是感觉很简单,觉得有用可以自己马上动手试一下写一个属于自己的代码模板吧,从此告别每次都要自己再写一遍适配器的窘境了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值