recycleview通过坐标查询位置
时间: 2023-10-04 08:09:36 浏览: 135
要通过坐标查询RecyclerView中的位置,可以使用RecyclerView的方法`findChildViewUnder()`。
具体实现步骤如下:
1. 获取坐标点所在的View
```java
View itemView = recyclerView.findChildViewUnder(x, y);
```
2. 如果存在该View,则通过RecyclerView的Adapter获取到该item的位置
```java
if (itemView != null) {
int position = recyclerView.getChildAdapterPosition(itemView);
YourData data = adapter.getItem(position);
}
```
需要注意的是,`findChildViewUnder()`方法返回的是包含坐标点的View,而不是最近的可见item的位置。因此,如果坐标点不在任何item范围内,该方法也会返回`null`。此时需要根据具体需求进行处理。
另外,如果需要查询的坐标点在RecyclerView的滚动范围之外,该方法也会返回`null`。因此,在使用该方法时需要注意RecyclerView的滚动状态。
相关问题
recycleview通过坐标查询item位置
要通过坐标查询RecyclerView中的item位置,可以使用RecyclerView的LayoutManager中的方法`findContainingItemView()`。
具体实现步骤如下:
1. 获取RecyclerView的LayoutManager对象
```java
LayoutManager layoutManager = recyclerView.getLayoutManager();
```
2. 获取坐标点所在的View
```java
View itemView = layoutManager.findContainingItemView(x, y);
```
3. 如果存在该View,则通过RecyclerView的Adapter获取到该item的位置
```java
if (itemView != null) {
int position = recyclerView.getChildAdapterPosition(itemView);
YourData data = adapter.getItem(position);
}
```
需要注意的是,`findContainingItemView()`方法返回的是包含坐标点的View,而不是最近的可见item的位置。因此,如果坐标点不在任何item范围内,该方法也会返回`null`。此时需要根据具体需求进行处理。
recycleview通过坐标获取附近的item
要通过坐标获取附近的RecyclerView item,可以使用RecyclerView的LayoutManager中的方法`findNearestVisibleItemPosition()`。
具体实现步骤如下:
1. 获取RecyclerView的LayoutManager对象
```java
LayoutManager layoutManager = recyclerView.getLayoutManager();
```
2. 获取坐标点所在的位置
```java
int x = (int) event.getX();
int y = (int) event.getY();
```
3. 调用LayoutManager的`findNearestVisibleItemPosition()`方法,传入坐标点,获取最近的可见item的位置
```java
int position = layoutManager.findNearestVisibleItemPosition(x, y);
```
4. 可以通过RecyclerView的Adapter获取到该item的数据
```java
YourData data = adapter.getItem(position);
```
需要注意的是,`findNearestVisibleItemPosition()`方法返回的是最近的可见item的位置,如果坐标点不在任何可见item范围内,该方法会返回-1。此时需要根据具体需求进行处理。
阅读全文