- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试在自定义适配器中使用 Butter Knife,就像文档中宣传的那样:http://jakewharton.github.io/butterknife/我粘贴了示例代码并使用我的 RelativeLayout
文件插入布局:
@Override public View getView(int position, View view, ViewGroup parent) {
ViewHolder holder;
ButterKnife.setDebug(true);
if (view != null) {
holder = (ViewHolder) view.getTag();
} else {
view = inflater.inflate(R.layout.list_row_people, parent, false);
holder = new ViewHolder(view);
view.setTag(holder);
}
holder.name.setText("John Doe");
// etc...
return view;
}
这是 ViewHolder 的代码(PeopleAdapter
的内联类):
static class ViewHolder {
@BindView(R.id.name)
TextView name;
public ViewHolder(View view) {
ButterKnife.bind(this, view);
}
}
不幸的是,holder.name.setText("John Doe");
抛出 NullPointer 异常,因为 name
为空。调试输出显示这些行:
13:11:32.816 11613-11613/com.myproject.debug D/ButterKnife: Looking up view binder for com.myproject.controller.adapters.PeopleAdapter$ViewHolder
13:11:32.827 11613-11613/com.myproject.debug D/ButterKnife: Not found. Trying superclass java.lang.Object
13:11:32.827 11613-11613/com.myproject.debug D/ButterKnife: MISS: Reached framework class. Abandoning search.
list_row_people.xml 目前看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:gravity="center_vertical"
android:padding="4dp"
android:text="@string/example_name"
android:textAppearance="?android:attr/textAppearanceLarge" />
</RelativeLayout>
阅读 https://github.com/JakeWharton/butterknife/issues/285 ,我将以下行添加到我的 proguard-rules.pro 中:
-keep class **$$ViewBinder { *; }
编辑:
Android Studio 2.1 与 com.jakewharton:butterknife:8.0.1。这是我的 build.gradle
:
apply plugin: 'com.android.application'
apply plugin: 'android-apt'
apply plugin: 'kotlin-android'
repositories {
mavenCentral()
}
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
applicationId "com.myproject"
minSdkVersion 18
targetSdkVersion 23
versionCode 18
versionName "0.0.16"
multiDexEnabled true
}
packagingOptions {
exclude 'main/AndroidManifest.xml'
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
applicationIdSuffix ".debug"
}
}
lintOptions {
abortOnError false
warning 'InvalidPackage'
}
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
compileOptions {
targetCompatibility JavaVersion.VERSION_1_7
sourceCompatibility JavaVersion.VERSION_1_7
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
wearApp project(':wear')
testCompile 'junit:junit:4.12'
apt 'com.github.hotchemi:permissionsdispatcher-processor:2.1.2'
releaseCompile project(path: ':common', configuration: 'release')
debugCompile project(path: ':common', configuration: 'debug')
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
compile 'com.google.android.gms:play-services-maps:8.4.0'
compile 'com.google.maps.android:android-maps-utils:0.4.3'
compile 'com.google.android.gms:play-services-wearable:8.4.0'
compile 'com.android.support:appcompat-v7:23.3.0'
compile 'com.android.support:support-v4:23.3.0'
compile 'com.android.support:design:23.3.0'
compile 'com.android.support:recyclerview-v7:23.3.0'
compile 'com.google.code.gson:gson:2.6.2'
compile 'com.jakewharton.timber:timber:2.5.0'
compile 'com.jakewharton:butterknife:8.0.1'
compile 'com.github.hotchemi:permissionsdispatcher:2.1.2'
compile 'com.squareup.picasso:picasso:2.5.2'
}
buildscript {
ext.kotlin_version = '1.0.1-2'
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
最佳答案
在 8.0.0 版本的 Butter Knife 中。
The
Runtime
andcompiler
are now split into two artifacts.
compile 'com.jakewharton:butterknife:8.0.0'
apt 'com.jakewharton:butterknife-compiler:8.0.0'
看看这个Link还有。
关于android - 自定义适配器中的 butterknife View 支架模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37049393/
我正在尝试使用 Butter Knife这些天在Android Studio,但它让我遇到了一些奇怪的问题。我曾经在eclipse上尝试过 butterknife ,效果很好。我不知道我是否在 And
Butterknife 8.8.0 引入了新的处理器选项 butterknife.debuggable ( link to changelog )。默认情况下,这是真的。在我的 build.gradl
当我尝试在我的 Android 项目中使用 Butterknife 时出现以下异常: 05-20 14:08:41.221 3296-3296/com.fedorparetsky.parcare E/
每次尝试运行我的项目时,我都会遇到一个问题,即找不到 ID 为“com.jakewharton.butterknife”的错误插件。出现有人能告诉我这段代码是怎么回事吗??我被卡住了,感谢任何帮助这是
我想在我的项目中使用 butterknife 。我按照 butterknife 教程做了一切。 但是当我为 View 设置任何东西(setText、setClickListener ...)时,我得到
如果已在 onCreate View 上绑定(bind) View ,但 onclick 不起作用。 这是我的代码: @Override public View onCreateView(Layout
我正在尝试使用 butterknife 。但我收到错误“无法解析符号'**ButterKnife'”。我尝试手动导入 butterknife.ButterKnife 但出现了相同的错误我修改了 gra
我已经安装了 ButterKnife 我的 build.gradle 看起来像这样: dependencies { compile fileTree(dir: 'libs', include:
在我的代码中,如果我想使用 butterknife,应该如何更改? Layout list_item是listview,所以我可以生成butterknife注入(inject),但我不知道如何修复其他
我正在尝试在我的 Android 项目中使用 ButterKnife。 我有一个Activity 实现了一个Interface。我正在使用 MVP 模式。我正在尝试从 EditText 获取文本,但它
我在考虑用Butter knife for android,好像简化代码很厉害 问题是我正在做游戏,所以性能和 apk 大小对我来说非常重要 我的问题是: butterknife 只在编译时使用还是在
我在当前项目中使用 Butterknife 库时遇到一些问题。我目前正在优化手机和平板电脑的项目,例如,有时两者的布局文件之间存在细微差异 布局/layout_example.xml l
我将 @OnClick 监听器设置为列表项中的 View 。在某些情况下,我需要禁用此 View 的监听器,以便 ListView 可以处理点击(应调用 OnItemClickListener),然后
我正在尝试实现 Butterknife进入我的android工作室项目。 但是,当我这样做时,我在 @InjectView 上收到错误“无法解析符号 InjectView”。 我没有成功实现 Butt
我已经创建了一个基类 recyclerview 并且我的其他类正在扩展基类。我已经实现了 butterknife .然而,当其他类扩展基类时,我得到的 View 为空。 下面是我的基类 public
我看到了 Butterknife 教程,它指出: @BindViews({android.R.id.text1, android.R.id.text2}) TextView textEmail,des
昨天我正在使用 butterknife 处理我正在进行的项目。但突然它停止工作了。ButterKnife.bind(this) 无法绑定(bind) View ,因此所有 View 都是抛出 Null
我是 Java 和 Butterknife 的新手,所以我遇到了一些麻烦。在此代码中,该函数正在记录登录按钮的工作情况,但实际上我被卡住了,因为我看不到有关我的应用程序错误或此按钮日志的任何信息。我真
使用 Butterknife 我有例如以下代码: @InjectView(R.id.foo) View vFoo; 但是当我运行 lint 时,我收到以下警告: Field is never assi
为什么 RecyclerView 适配器不能与 ButterKnife 一起使用? 它适用于 findViewById 但不适用于 ButterKnife 适配器类 public class Cate
我是一名优秀的程序员,十分优秀!