OnItemClickListener를 사용하여 GridView에서 2D 배열 좌표 가져 오기

user3371750

다음과 같이 OnClickListener로 9x9 그리드를 설정하는 보드 게임 클래스가 있습니다.

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.Toast;

public class GameActivity extends Activity {

    private ImageAdapter boardAdapter;
    private int[][] board = new int[9][9];

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_game);

        for(int i = 0; i < 9; i++) {
            board[0][i] = 2;
            board[1][i] = 2;
            board[7][i] = 1;
            board[8][i] = 1;
        }

        GridView gameGridView = (GridView) findViewById(R.id.game_gridview);

        boardAdapter = new ImageAdapter(this, board);
        gameGridView.setAdapter(boardAdapter);

        AdapterView.OnItemClickListener boardListener = new AdapterView.OnItemClickListener() {
            int[][] startPosition;
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                if(startPosition == null) {
                    startPosition = position; // Returns the value at the position, not the position itself, which is what I am looking for
                }
                boardAdapter.notifyDataSetChanged();
            }
        };

        gameGridView.setOnItemClickListener(boardListener);

    }

}

다음은 GridView에 2d 정수 배열을 표시하는 데 사용하는 사용자 지정 BaseAdapter에 대한 코드입니다.

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;

public class ImageAdapter extends BaseAdapter {

    private Context context;
    int[][] board;
    int rowPosition, columnPosition, count;

    public ImageAdapter(Context c, int[][] content) {
        context = c;
        count = 0;
        board = new int[content.length][content[0].length];
        for (int i = 0; i < board.length; i++)
        {
            for (int j = 0; j < board[i].length; j++)
            {
                board[i][j] = content[i][j];
                count++;
            }
        }
        rowPosition = 0;
        columnPosition = 0;
    }

    public int getCount() {
        return count;
    }

    public int getRowCount() {
        return board.length;
    }

    public int getColumnCount() {
        return board[0].length;
    }

    public Object getItem(int rowNum, int columnNum) {
        return board[rowNum][columnNum];
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView imageView;
        if (convertView == null) {
            imageView = new ImageView(context);
            imageView.setLayoutParams(new GridView.LayoutParams(120, 120));
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            imageView.setPadding(8, 8, 8, 8);
        }
        else {
            imageView = (ImageView) convertView;
        }

        columnPosition = position % board[0].length;
        rowPosition = (position - columnPosition) / board[0].length;

        switch(board[rowPosition][columnPosition]) {
            case 1:
                imageView.setImageResource(R.drawable.blackpiece);
                break;
            case 2:
                imageView.setImageResource(R.drawable.whitepiece);
                break;
            default:
                imageView.setImageResource(R.drawable.emptypiece);
                break;
        }

        return imageView;
    }

    public Object getItem(int position) {
        return null;
    }

    public long getItemId(int position) {
        return 0;
    }

}

내 문제는 누군가 GridView를 클릭 할 때 2d 배열에서 좌표를 얻는 방법을 잘 모르겠다는 것입니다. 예를 들어 사용자가 gridView의 첫 번째 셀을 클릭하면 position [0] [0] 값이 반환됩니다.

찬드라 샤르마

귀하의 질문에 의해 각 2D 배열 위치에서 위치를 변환하고 싶다는 것을 이해합니다 .OnItemClickListener 메서드를 업데이트합니다 .X 및 Y 위치로 u는 2D 배열에서 각각의 값을 얻습니다. 그리드가 9 * 9라고 가정하므로 Column = 9가 아닙니다.

클래스 수준 변수 선언

int columncount = 9;

    AdapterView.OnItemClickListener boardListener = new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
                int xpos= position/columncount;
                int ypos=position%columncount;
            Log.v("position", "position x is :"+xpos+"  pos y is :"+ypos);

            boardAdapter.notifyDataSetChanged();
        }
    };

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

2D 배열의 왼쪽 하단에서 시작하는 1D 배열로 2D 좌표가있는 1D 항목 가져 오기

분류에서Dev

맵 함수를 사용하여 2D 배열에서 행 및 열 인덱스 가져 오기

분류에서Dev

2D double [] [] 배열에서 하위 배열 가져 오기

분류에서Dev

지정된 좌표 및 방향에서 2D 배열에서 n 개의 요소 가져 오기

분류에서Dev

d3를 사용하여 tsv에서 문자열 배열 가져 오기

분류에서Dev

C # 좌표를 사용하여 bindinglist <T>에서 값 가져 오기 및 설정

분류에서Dev

2D 행렬에서 좌표 목록 가져 오기

분류에서Dev

jq를 사용하여 json에서 배열 가져 오기

분류에서Dev

2 개의 좌표를 사용하여 배열에서 항목을 선택하고 채우기

분류에서Dev

2D 배열에서 특정 좌표가 주어진 이웃 찾기

분류에서Dev

튜플 목록을 인덱스로 사용하여 numpy 2d 배열에서 값 가져 오기

분류에서Dev

ReactJS를 사용하여 배열의 배열에서 데이터 가져 오기

분류에서Dev

null 값을 사용하여 2D 행렬 좌표 (배열) 만들기

분류에서Dev

affdex SDK를 사용하여 얼굴 좌표 가져 오기

분류에서Dev

2D 배열에서 좌표를 추적하고 찾는 방법

분류에서Dev

델파이를 사용하여 2D 배열을 클래스로 가져 오기

분류에서Dev

ngx-echarts를 사용하여 평행 좌표 차트에서 선택한 값 가져 오기

분류에서Dev

IterableDiffer를 사용하여 Angular 8에서 배열 크기 변경 가져 오기

분류에서Dev

2D 배열을 사용하여 열에서 가장 큰 수 찾기

분류에서Dev

OnItemClickListener를 사용하여 항목에 대한 텍스트 가져 오기

분류에서Dev

집계를 사용하여 입력에서 배열 가져 오기

분류에서Dev

Angular를 사용하여 키 값 배열에서 JSON 값 가져 오기

분류에서Dev

Java를 사용하여 Mongo 컬렉션에서 키 값 배열 가져 오기

분류에서Dev

NSDictionary 개체를 사용하여 배열에서 개체 가져 오기

분류에서Dev

Angularfire를 사용하여 Firebase에서 특정 키 배열 가져 오기

분류에서Dev

JQuery를 사용하여 양식에서 JavaScript 다차원 배열 가져 오기

분류에서Dev

lodash를 사용하여 객체 배열에서 uniq [key, value] 가져 오기

분류에서Dev

PHP를 사용하여 JSON API 배열에서 모두 가져 오기

분류에서Dev

Javascript를 사용하여 다차원 배열에서 최대 값 가져 오기

Related 관련 기사

  1. 1

    2D 배열의 왼쪽 하단에서 시작하는 1D 배열로 2D 좌표가있는 1D 항목 가져 오기

  2. 2

    맵 함수를 사용하여 2D 배열에서 행 및 열 인덱스 가져 오기

  3. 3

    2D double [] [] 배열에서 하위 배열 가져 오기

  4. 4

    지정된 좌표 및 방향에서 2D 배열에서 n 개의 요소 가져 오기

  5. 5

    d3를 사용하여 tsv에서 문자열 배열 가져 오기

  6. 6

    C # 좌표를 사용하여 bindinglist <T>에서 값 가져 오기 및 설정

  7. 7

    2D 행렬에서 좌표 목록 가져 오기

  8. 8

    jq를 사용하여 json에서 배열 가져 오기

  9. 9

    2 개의 좌표를 사용하여 배열에서 항목을 선택하고 채우기

  10. 10

    2D 배열에서 특정 좌표가 주어진 이웃 찾기

  11. 11

    튜플 목록을 인덱스로 사용하여 numpy 2d 배열에서 값 가져 오기

  12. 12

    ReactJS를 사용하여 배열의 배열에서 데이터 가져 오기

  13. 13

    null 값을 사용하여 2D 행렬 좌표 (배열) 만들기

  14. 14

    affdex SDK를 사용하여 얼굴 좌표 가져 오기

  15. 15

    2D 배열에서 좌표를 추적하고 찾는 방법

  16. 16

    델파이를 사용하여 2D 배열을 클래스로 가져 오기

  17. 17

    ngx-echarts를 사용하여 평행 좌표 차트에서 선택한 값 가져 오기

  18. 18

    IterableDiffer를 사용하여 Angular 8에서 배열 크기 변경 가져 오기

  19. 19

    2D 배열을 사용하여 열에서 가장 큰 수 찾기

  20. 20

    OnItemClickListener를 사용하여 항목에 대한 텍스트 가져 오기

  21. 21

    집계를 사용하여 입력에서 배열 가져 오기

  22. 22

    Angular를 사용하여 키 값 배열에서 JSON 값 가져 오기

  23. 23

    Java를 사용하여 Mongo 컬렉션에서 키 값 배열 가져 오기

  24. 24

    NSDictionary 개체를 사용하여 배열에서 개체 가져 오기

  25. 25

    Angularfire를 사용하여 Firebase에서 특정 키 배열 가져 오기

  26. 26

    JQuery를 사용하여 양식에서 JavaScript 다차원 배열 가져 오기

  27. 27

    lodash를 사용하여 객체 배열에서 uniq [key, value] 가져 오기

  28. 28

    PHP를 사용하여 JSON API 배열에서 모두 가져 오기

  29. 29

    Javascript를 사용하여 다차원 배열에서 최대 값 가져 오기

뜨겁다태그

보관