2013-05-16 2 views
0

나는 안드로이드 초보자이며 첫 번째 응용 프로그램을 작성 중입니다. Google 지역 정보 API를 사용하여 자습서를 선택하고 작업했습니다. 그 다음에는 결과에서 무작위로 식당을 선택할 수있는 버튼을 추가하기로 결정했습니다. 앱이 실행되고 내 은하계 탭 2에서 테스트해도 오류가 없습니다. 앱의 임의 버튼을 클릭하면 표시되는 모든 것이 목록의 첫 번째 레스토랑입니다. 어떤 도움이라도 대단히 감사합니다.배열의 임의 색인 생성

btnGetRand = (Button) findViewById(R.id.btn_get_rand); 

    btnGetRand.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View arg0) { 
      Time t = new Time(); 
      t.setToNow(); 
      Random randomGenerator = new Random(t.toMillis(false)); 
      int count = nearPlaces.results.size(); 
      int r = randomGenerator.nextInt(count); 
      int id = nearPlaces.results.indexOf(r); 
      lv.performItemClick(lv, r, id);    
     } 
    }); 

    lv.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, 
       int position, long id) { 
      String reference = ((TextView) view.findViewById(R.id.reference)) 
           .getText().toString(); 

      Intent in = new Intent(getApplicationContext(), 
        SinglePlaceActivity.class); 
      in.putExtra(KEY_REFERENCE, reference); 
      startActivity(in); 
     } 
    }); 
+0

코드에서 물건을 얻는 곳 –

+0

코드를 통해 임의의 생성기와 변수가 디버깅되고 값이 변경됩니다. –

답변

1

이 코드를 보면 무작위 논리가 잘못되었거나 표시 할 코드가 잘못되었다고 말할 수 없습니다.

그러나 Random은 매우 간단합니다 (밀리 초 단위로 시간을 불필요하게 시딩한다고하더라도). 그러면 괜찮아 보입니다.

내 생각에 API를 올바르게 사용하지 않는 것 같습니다.

디버거를 사용하여 버튼을 클릭 할 때 선택한 임의의 색인을 인쇄하여 확인할 수 있습니다.

+0

방금 ​​후속 조치하고 노골적인 설명을 드리겠습니다. 기본 생성자는 완벽하게 작동합니다. –

+0

답변 해 주셔서 감사합니다. 시드를 버림으로써 API를 올바르게 사용했는지 확인한 다음 말한 것처럼 디버거를 살펴 보았습니다. "원본 첨부 파일에 Random.class의 소스 파일이 포함되어 있지 않습니다."라는 메시지가 나와서 옵션을 제공합니다. 첨부 소스를 변경하십시오. 어떤 소스를 선택해야합니까? 내 첨부 JAR 파일은 다음과 같습니다 – akenawell85x

+0

내 부착 된 JAR 파일은 다음과 같습니다 안드로이드 지원-V4 안드로이드 구글-API 클라이언트 1.10.3 구글-API-클라이언트 android2 1.10.3 구글-HTTP 클라이언트 1.10.3 구글 -http-클라이언트 android2 1.10.3 구글에 OAuth 클라이언트 1.10.1 GSON 2.1 구아바 11.0.1 잭슨 코어 ASL 1.9.4 JSR305 1.3.9 photobuf 자바 2.2.0 – akenawell85x

0

ListView에서 클릭을 트리거해야합니까? nearPlaces.results.get(r)을 사용하여 장소 데이터를 가져 오지 않고 startActivity()으로 전화하는 것이 가장 좋은 이유는 무엇입니까?

0

지금 사용하고있는 랜덤 대신 SecureRandom을 사용해보십시오. 그것을 뿌릴 필요도 없습니다. 귀하의 시간이 멈춘 경우 (시뮬레이터, 배터리가 방전 된 경우), 현재 Random은 모든 호출에 동일한 시간으로 시드됩니다.