我有RecyclerView
。项目的布局有一个 dangling ,ImageView
它onClick
调用类中的适当方法来初始化RecyclerView
. 在方法参数中,我得到View
了用户点击的元素。我需要知道这个元素所在的项目的位置。
我查看了文档,有一个getChildAdapterPosition
. 我通过它view
来获取它所在的项目的编号,但是当我点击这个项目时,应用程序对我来说只是崩溃了。
我究竟做错了什么?
这是单击处理程序方法的代码:
public void onClickHandler(View view) {
switch (view.getId()) {
case R.id.status_img:
if (view.getTag() instanceof Roll) {
Roll roll = (Roll) view.getTag();
int recyclerPos = recyclerView.getChildAdapterPosition(view);
}
break;
}
}
在RecyclerView操作中,对于根View的每一个元素,都会在View对象中添加android.support.v7.widget.RecyclerView.LayoutParams类型的LayoutParams属性,其中有一个mViewHolder参数,其中包含了关于根View的服务信息视图在 RecyclerView 中的位置。
使用 getChildAdapterPosition(View) 方法时,会发生以下情况:
由于在单击时挂起的 ImageView 不是列表项的根 View,因此 ImageView 的 getLayoutParams 方法返回一个未强制转换为 android.support.v7.widget.RecyclerView.LayoutParams 类型的对象。因此,发生转换错误并且应用程序崩溃。
如何最好地解决这个问题的一个例子: http ://whiteshieldsoftware.blogspot.ru/2016/01/recyclerview-6.html