bindView注释代码转成findByViewId脚本

bindView注释代码转成findByViewId脚本

  在接手代码的时候一般回遇到有用butterknife来绑定控件的习惯,butterknife确实是个非常方便的控件,但是在实际使用的时候还是会存在一部分问题,彻底避免自然是改回原来的控件绑定方式,但是一个个打太过麻烦,我这里就写了个绑定脚本,直接放到Java代码里运行就行。

在线Java编译器:https://tool.lu/coderunner/

注意:

1、复制进去的化有绑定控件代码就行,其他非绑定控件代码会过滤掉。
2、在线Java运行编译器里直接不能复制,不然会出现String格式不符异常,可以用word文档处理(回车,前置空格即可);
例:@BindView(R2.id.middlegiftLayout)View mMiddleGiftLayout;@BindView(R2.id.middlegiftHead)ImageView mMiddleGiftHead;@BindView(R2.id.middleSendName)TextView mMiddleSendName;@BindView(R2.id.middleGetName)TextView mMiddleGetName;@BindView(R2.id.middleText)TextView mMiddleText;@BindView(R2.id.middleGiftName)TextView mMiddleGiftName;
3、可以直接在Android测试类里复制运行使用,复制到s对象里就行,里面会自动转换string未规范形式,然后测试运行打印出来的就是了。

java脚本
class Untitled {
	    public static void main(String[] args) {
            String s="@BindView(R2.id.simple_room)\n" +
                    "    RoundedImageView simple_room;\n" +
                    "    @BindView(R2.id.viewpager)\n" +
                    "    ViewPager mViewPager;\n" +
                    "    BottomAdapter mAdapter;\n" +
                    "\n" +
                    "    @BindView(R2.id.room_type)\n" +
                    "    TextView room_type;\n" +
                    "    @BindView(R2.id.room_name)\n" +
                    "    TextView room_name;\n" +
                    "    @BindView(R2.id.online_room)\n" +
                    "    TextView online_room;\n" +
                    "    @BindView(R2.id.exmine)\n" +
                    "    ImageView exmine;\n" +
                    "    @BindView(R2.id.collect)\n" +
                    "    TextView mCollect;\n" +
                    "    @BindView(R2.id.roomId)\n" +
                    "    TextView mRoomId;";//需要转换的内容放这
            s=s.replaceAll("\\n","");
            s=s.replaceAll("    ","");
            String[] t=s.split(";");
            StringBuilder f= new StringBuilder();
           for (String value : t) {
            if (value.contains("R2.id.")) {
                String id = value.replaceAll("@BindView\\(R2.id.", "").split("\\)")[0];
                String name = value.split("\\)")[1].split(" ")[1];
                f.append(name).append("=findViewById(R.id.").append(id).append(");\n");
            }
        }
            System.out.println(f);
    }
}
转换结果

在这里插入图片描述

升级版

可以放回类型,应对需要返回类型的情况。

class Untitled {
	    public static void main(String[] args) {
            String s="@BindView(R2.id.queue_list2)\n" +
                "    RecyclerView queue_list2;\n" +
                "    @BindView(R2.id.typePrivate)\n" +
                "    RelativeLayout mPrivateLayout;\n" +
                "\n" +
                "    @BindView(R2.id.queue_list)\n" +
                "    RecyclerView queue_list;\n" +
                "\n" +
                "    @BindView(R2.id.equipment_linyout)\n" +
                "    LinearLayout equipment_linyout;\n" +
                "    @BindView(R2.id.send_linyout)\n" +
                "    LinearLayout send_linyout;\n" +
                "    @BindView(R2.id.rankLayout)\n" +
                "    View mRankLayout;\n" +
                "    @BindView(R2.id.go_back)\n" +
                "    ImageView go_back;\n" +
                "    @BindView(R2.id.edt_input_text)\n" +
                "    EditText edt_input_text;\n" +
                "\n" +
                "    @BindView(R2.id.egg)\n" +
                "    ImageView mEgg;\n" +
                "    @BindView(R2.id.middle_gift)\n" +
                "    View MiddleGift;\n";//需要转换的内容放这
            s=s.replaceAll("\\n","");
            s=s.replaceAll("    ","");
            String[] t=s.split(";");
            StringBuilder f= new StringBuilder();
           for (String value : t) {
            if (value.contains("R2.id.")) {
                String id = value.replaceAll("@BindView\\(R2.id.", "").split("\\)")[0];
                String name = value.split("\\)")[1].split(" ")[1];
				String type=value.split("\\)")[1].split(" ")[0];
                f.append(name).append("=("+type+")findViewById(R.id.").append(id).append(");\n");
            }
        }
            System.out.println(f);
    }
}

升级版转换结果

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值