android - 如何获取gridview(或RecyclerGridview)的选定项目的所有最近位置

标签 android gridview grid logic

我正在尝试做一些逻辑,但我无法达到实际结果。
我正在使用 recyclerview(GridLayoutManager)
我有像 3*3,5*5,7*7...等等这样的网格单元..

下面是3*3格子的图片

enter image description here

现在我的情况是什么,我需要所有最近的单元格的位置。

如图所示,我在下面描述了一些案例:

案例1:

Selected Cell -1
expected result -2,5,4

情况 2:(如图所示)

Selected Cell -5
expected result -1,2,3,4,6,7,8,9

案例 3:

Selected Cell -6
expected result -3,5,9

那么,我怎样才能动态地实现所有单元格框 3*3,5*5,7*7....等等

最佳答案

我可以给你一个简单的方法来实现这个。不完美,但很简单。

public void getNeareast(int m, int choosedId) {

    if (m <= 2) {//too simple ,you can just return the right result;

        return;
    }

    int[] choose = new int[]{-m - 1, -m, -m + 1, -1, 0, +1, m - 1, m, m + 1};
    int x = choosedId / m;
    int y = choosedId % m;
    if (x == 0 || (y == 0 && x == 1)) {//no top data
        choose[0] = 0;
        choose[1] = 0;
        choose[2] = 0;
    }

    if ((x == m - 1 && y != 0) || x == m) {// no bottom data
        choose[6] = 0;
        choose[7] = 0;
        choose[8] = 0;
    }

    if (y == 1) { // no left data
        choose[0] = 0;
        choose[3] = 0;
        choose[6] = 0;
    }

    if (y == 0) {// no right data
        choose[2] = 0;
        choose[5] = 0;
        choose[8] = 0;
    }

    List<Integer> result = new ArrayList<>();
    for (int i = 0; i < 9; i++) {//get choosed data
        if (choose[i] != 0) {
            result.add(choosedId + choose[i]);
        }
    }
    for (int i : result) {//print result;
        Log.d("biu", "biu->" + i);
    }

}

关于android - 如何获取gridview(或RecyclerGridview)的选定项目的所有最近位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42696389/

相关文章:

asp.net - 带有寻呼机 TopAndBottom 的 GridView

python - 在 python 中关联网格数据集

java - android 计时器处理程序 java

android - 方法 'placemarkFromCoordinates' 没有为类型 'Geolocator' 定义

java - 如何在不引发 org.threeten.bp.zone.ZoneRulesException 的情况下对使用 ZoneId.systemDefault 的代码进行单元测试

gridview - 如何按字母顺序对 GridView 项目进行分组 : Windows Store App

Android GridView 双指缩放

php - android json 发布到 php

html - Bootstrap 中的文本较大的列

css - HTML5 的图像对齐问题