0

私はアンドロイドの初心者で、最初のアプリに取り組んでいます。Google Places API を使用するチュートリアルを選択し、それを実行しました。その後、結果からレストランをランダムに選択するボタンを追加したいと考えました。アプリは実行され、エラーは発生せず、galaxy タブ 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);
        }
    });
4

3 に答える 3

1

このコードを見ると、ランダムなロジックが間違っているのか、表示するコードが間違っているのかはわかりません。

ただし、 Random は非常に単純で (ミリ秒単位の時間を不必要にシードしている場合でも??)、問題ないように見えます。

私の推測では、API を正しく使用していないということです。

デバッガーを使用してそこにアクセスし、ボタンをクリックするたびに選択されたランダムインデックスを出力して、確認できるようにします。

于 2013-05-16T18:12:31.120 に答える
0

ListView でクリックをトリガーする必要がありますか? 使用して場所データを取得し、それnearPlaces.results.get(r)を呼び出すだけstartActivity()ではどうですか?

于 2013-05-16T18:10:30.533 に答える
0

SecureRandom今使っているランダムの代わりに使ってみてください。種をまく必要もありません。時間が詰まっている場合 (シミュレーター、電池切れなど)、Random呼び出しごとに電流が同時にシードされることに注意してください。

于 2013-05-16T18:14:48.823 に答える