2016-12-21 10 views
1

こんにちは私は単純なアンドロイドアプリに取り組んでいます。アプリは画像ビューのみに含まれています。画像表示では、表示されているクリック画像を変更する必要があります。私の質問は、どのように私はリソースまたはリソースイメージのインデックスをインデックスで取得できます。例えばdrawableで私はs1 - s100から100のイメージ名を持っています。そして、私はこのようなランダム関数を使ってそれらの1つを表示したい:リソースからランダムなイメージを選んでください

private void ImageView_Click(object sender, EventArgs e) 
     { 
      Random r = new Random(); 
      int index = r.Next() % 100; 

      //code where I get picture on "index place" from my drawable folder. 
     } 

ありがとう!

答えて

1

を追加何百ものアイテムがあります。それを実現するもっと簡単な方法は、ドロウアブルの識別子を直接取得することです。

私はそれが可能だろうかXamarin/C#の上でわからないんだけど、Javaを使用すると、このように使用します。

Random r = new Random(); 
int index = r.nextInt(100); 
String name = "s" + index; 
int drawableId = getResources().getIdentifier(
        name,    // the name of the resource 
        "drawable",   // type of resource 
        getPackageName())); // your app package name 
imageView.setImageResource(drawableId); 
1

はその後、ランダム指数を計算

int resIds = new int[]{R.drawable.s1, R.drawable.s2, .... R.drawable.s100}; 

すべてのドローアブルを保存し、そのインデックス

Random r = new Random(); 
int index = r.Next(resIds.length -1); 
imageView.setImageResource(resIds[index]); 
+0

Rにアクセスするには、usingステートメントを追加する必要がありますか? –

+0

なぜこの回答を受け入れましたか?そのような整数配列を作るのは誰ですか? @Budiusの答えは、あなたがどこにいたかです。そして、最良の答えは、ドロウアブルフォルダのコンテンツを単にリストすることができるので、投稿されていない。 – greenapps

1

から引き出し可能に選ぶ値のいずれかのarrays.xmlファイルを作成し、にあなたのドロウアブルを追加するために、整数の1つの配列を取りますこのような配列

<integer-array name="images"> 
    <item>@drawable/drawable1</item> 
    <item>@drawable/drawable2</item> 
    <item>@drawable/drawable3</item> 
</integer-array> 

その後、あなたの活動のクラスで私はあなたが既に答えを受け入れた参照が、それは、配列を書き込むために、開発者が必要なので、それはuが望むものを達成するための非常に退屈な方法です。この

TypedArray images = getResources().obtainTypedArray(R.array.images); 

// get resource id by random index i 
images.getResourceId(i, -1) 
0

これが最もエレガントなソリューションである、@BudiusこれはC#ので、Javaでそれを与えたが、 :

private void ImageView_Click(object sender, EventArgs e) 
     { 
      Random r = new Random(); 
      int index = r.Next() % 36; 
      String name = "s" + index; 
      int drawableId = Resources.GetIdentifier(
           name,    // the name of the resource 
           "drawable",   // type of resource 
           "Us.Us"); // your app package name 
      imageView.SetImageResource(drawableId); 

     } 

"Us.Usは、" 私のパッケージ名です。

+0

それは私の答えのように見えます。ただ言って。 – Budius

+1

@Budius謝罪します。私は見逃しています。ありがとう –

関連する問題