마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

for문의 i값을 내부에 있는 온클릭 리스너 함수도 알아야하는데요..

0 추천

for (int i = 0; i < length; i++) { // for문 시작
       
            LatLng latlng = new LatLng(
              Float.valueOf(results[i * 4 + 2]),
              Float.valueOf(results[i * 4 + 3]));
            Marker marker = mMap.addMarker(new MarkerOptions()
     
                    .position(latlng)
                    .title(results[i * 4 + 1].split(",")[0] /*+ ", " + results[i * 4]*/) //results[i * 4]
                    .icon(BitmapDescriptorFactory.defaultMarker(i * 360 / length)));
           
            mMap.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {
    public void onInfoWindowClick(final Marker marker) {
    
      AlertDialog.Builder diaBox = new AlertDialog.Builder(context)
      .setTitle("안내")
      .setMessage("저장하시겠습니까?")
      .setPositiveButton("예", new DialogInterface.OnClickListener() { // 다이어로그에서 '예라고' 눌럿을때
       
       public void onClick(DialogInterface dialog, int which) { // 처리해줄 함수
        shop shop = new shop(); // shop 객체 생성
        shop.setShopTitle(results[i*4+1].split(",")[0]); // 업체명
        shop.setShopPhone(results[i*4]); // 업체 전화번호
        shop.setId(SampleSingleton.singleton().getId()); //유저 아이디
        new HttpConnect(MapActivity.this, mUrl, shop);
        Toast.makeText(context,"저장하였습니다", Toast.LENGTH_LONG).show();
        
       }
      }).setNeutralButton("아니오", null);
      diaBox.show();
     
    }
   });
           
           
            marker.setSnippet(results[i * 4]);
            marker.showInfoWindow();
            mPoints[i] = latlng;
           
        } // for문 끝

빨간줄로 표시한 for문의 i 값을 밑에 빨간줄 다이어로그의 온클릭 리스너 함수에서도 i 값을 그대로 받아와야하는데

방법을 모르겠습니다... 리스너도 하나의 클래스라서 생성자를 통해서 넘기는 것처럼 i 값을 넘겨줘야하나요?

마니패스트 (120 포인트) 님이 2015년 6월 5일 질문

1개의 답변

0 추천
final 키워드를 쓰면 잘하면 될거 같네요.

final pos = i;

해서 shop.setShopTitle(result[pos*4+1].split(",")[0];

식으로요.

 

구조는 좀 변경되었으면 하는데요.

정보 같은건 전역으로 올리시구요.

View 는 setTag 로 태그를 달수 있거든요. 이걸로 순번 같은걸 저장하세요. Object 니까 Integer 순번을 저장해도 되요. 아니면 info 클래스 만들어서 그걸 저장해도 되구요. 그래서 뷰 클릭시 뷰에 저장된 태그를 getTag로 읽어서 타입캐스팅 한다음 쓰면 좀더 깔끔한 구조가 되지 않을까 싶습니다.
ㄱㄴㄷ 님이 2015년 6월 5일 답변
...