/** Create ViewHolder for adapters with injections */ protected void generateAdapter() { // view holder class String holderClassName = Utils.getViewHolderClassName(); StringBuilder holderBuilder = new StringBuilder(); // generator of view holder class StringBuilder generator = new StringBuilder(); generator.append("public " + holderClassName + "(android.view.View rootView) {\n"); // rootView String rootViewName = "rootView"; holderBuilder.append("public " + "android.view.View " + rootViewName + ";\n"); generator.append("this." + rootViewName + " = " + rootViewName + ";\n"); for (Element element : mElements) { if (!element.used) { continue; } // field holderBuilder.append("public " + element.name + " " + element.getFieldName() + ";\n"); // findViewById in generator generator.append( "this." + element.getFieldName() + " = (" + element.name + ") " + rootViewName + ".findViewById(" + element.getFullID() + ");\n"); } generator.append("}\n"); holderBuilder.append(generator.toString()); PsiClass viewHolder = mFactory.createClassFromText(holderBuilder.toString(), mClass); viewHolder.setName(holderClassName); mClass.add(viewHolder); mClass.addBefore( mFactory.createKeyword("public", mClass), mClass.findInnerClassByName(holderClassName, true)); mClass.addBefore( mFactory.createKeyword("static", mClass), mClass.findInnerClassByName(holderClassName, true)); }