【发布时间】:2016-02-21 06:57:05
【问题描述】:
我有一个用于 recyclerview 的适配器类:
public abstract class RecyclerViewArrayAdapter<T, VH extends RecyclerView.ViewHolder>
extends RecyclerView.Adapter<VH> {
...
}
我正在创建一个这样的对象:
new RecyclerViewArrayAdapter<String, ListImageItemViewHolder>(emailAddresses) {
@Override
public ListImageItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item, parent, false);
return new ListImageItemViewHolder(v);
}
@Override
public void onBindViewHolder(ListImageItemViewHolder holder, int position) {
holder.setClickListener(new ListImageItemViewHolder.ClickListener() {
@Override
public void onClick(View v, int position, boolean isLongClick) {
}
});
}
};
ListImageItemViewHolder 定义如下所示:
public class ListImageItemViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener {
private ClickListener clickListener;
public ListImageItemViewHolder(View itemView) {
super(itemView);
itemView.setOnClickListener(this);
itemView.setOnLongClickListener(this);
}
public interface ClickListener {
void onClick(View v, int position, boolean isLongClick);
}
public void setClickListener(ClickListener clickListener) {
this.clickListener = clickListener;
}
}
一切看起来都很好,没有红色标记,但是一旦我编译以下行就会给我一个 n 错误;
错误:(147, 68) 错误:找不到符号类 ClickListener
就像 147 是:
holder.setClickListener(new ListImageItemViewHolder.ClickListener() {
@Override
public void onClick(View v, int position, boolean isLongClick) {
}
});
问题:为什么它无法访问 ClickListener .. ..
这让我发疯?
我在这里做错了什么......
更新:
我发现问题在于缩小。
构建类型 { 发布 { 缩小启用真 } }
RecyclerViewArrayAdapter 和 ListImageItemViewHolder 是名为“Common”的模块的一部分。我在我的项目中引用了这个模块。
现在,当我将一个通用 gradle 设置为“缩小”为 false 时,它就可以工作了。 当我将它更改为缩小真实的那一刻,它又回来了。
它看起来像一个编译问题。但是我不能忍受这个错误,也不能将生产版本的 minify 设置为 false。
有人可以帮我解决这个问题吗?
【问题讨论】:
-
你不能调用一个你可以实现的接口..
-
@VaibhavG 我正在实现相同的功能 - 请参阅 new ListImageItemViewHolder.ClickListener() { } line
-
@VaibhavG 即使我声明我得到这个错误 private ListImageItemViewHolder.ClickListener clickListener;
-
确保添加新的proguard例外
标签: java android android-activity android-recyclerview