01h*_*nst 5 android android-recyclerview
在许多问题中,人们说“在onCreateViewHolder中调用OnClickListener。您不需要在onBindViewHolder中调用OnClickListener每个项目”
@Override
public Viewholder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(itemLayout, parent, false);
final ViewHolder holder = new ViewHolder(v);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG, "position = " + holder.getAdapterPosition());
}
});
return new Viewholder(v);
}
@Override
public void onBindViewHolder(final BoardListViewHolder holder, int position) {
}
Run Code Online (Sandbox Code Playgroud)
但在 Logcat 中,始终显示“position = -1”
这是不正确的。
为什么我应该在 onCreateViewHolder 中调用 onClickListener ?
\n\n\nonCreateViewHolder 中的 getAdapterPosition 始终为 \xe2\x80\x9c-1\xe2\x80\x9d
\n
你应该return holder 代替new Viewholder(v).
代码结构
\n\n@Override\n public Viewholder onCreateViewHolder(ViewGroup parent, int viewType) {\n View v = LayoutInflater.from(parent.getContext()).inflate(itemLayout, parent, false);\n final ViewHolder holder = new ViewHolder(v);\n\n holder.itemView.setOnClickListener(new View.OnClickListener() {\n @Override\n public void onClick(View v) {\n Log.d(TAG, "position = " + holder.getAdapterPosition());\n }\n });\n return holder;\n }\n\n @Override\n public void onBindViewHolder(final BoardListViewHolder holder, int position) {\n\n }\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
1550 次 |
| 最近记录: |