2013-05-16 56 views
0

我是Android的初學者,正在開發我的第一個應用程序。我選擇了一個使用谷歌地方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

望着這個代碼是不可能的說,如果你是隨機邏輯是錯誤的或你的代碼顯示是錯誤的。

然而,隨機是非常簡單的(即使你有時間以毫秒爲單位??不必要的種子吧)看起來確定。

我的猜測是,你沒有正確使用API​​。

在那裏得到一個調試器和打印選擇上不斷點擊按鈕隨機指數,所以你可以驗證它。

+0

讓我來跟進,並明確表示:拋棄隨機種子。默認構造函數完美工作 –

+0

感謝您的答案。我拋棄了種子,檢查了是否正確使用了API,然後像調試器一樣通過了解,並且它說「源附件不包含Random.class的源文件」,並且讓我可以選擇更換附件源。我應該選擇哪個來源?我附罐子: – akenawell85x

+0

我附罐子: Android的支持-V4 Android的谷歌 -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 傑克遜核心 - 翔升1.9.4 JSR305 1.3.9 photobuf的Java 2.2.0 – akenawell85x

0

您是否必須在ListView上觸發點擊?爲什麼不使用nearPlaces.results.get(r)獲取地點數據,並且只需撥打startActivity()就可以了?

0

嘗試使用SecureRandom,而不是你現在使用的是隨機的。不需要播種它。請注意,如果您的時間卡住了(模擬器,電池沒電,無論如何),那麼目前的Random將在每次通話時播放相同的時間。