簡體   English   中英

如何知道隨機數組列表使用的最后一個可繪制對象是什么?

[英]How to know what was the last drawable used from randomized arraylist?

我有2個列表,一個用於imageviews的數組和一個用於drawables的數組:

List<Integer> imageViews = new ArrayList<Integer>();
List<Integer> images = new ArrayList<Integer>();

這是我在每個列表中添加項目的位置。

public void viewadd()
{
    imageViews.add(R.id.star1);
    imageViews.add(R.id.star2);
    imageViews.add(R.id.star3);
    imageViews.add(R.id.star4);
    imageViews.add(R.id.star5);
    imageViews.add(R.id.star6);
    imageViews.add(R.id.star7);
    imageViews.add(R.id.star8);
    imageViews.add(R.id.star9);
    imageViews.add(R.id.star10);
    imageViews.add(R.id.star11);
    imageViews.add(R.id.star12);
}

public void imageadd()
{

    images.add(R.drawable.blue);
    images.add(R.drawable.red);
    images.add(R.drawable.green);
    images.add(R.drawable.violet);
    images.add(R.drawable.orange);
    images.add(R.drawable.yellow);
    images.add(R.drawable.blue);
    images.add(R.drawable.red);
    images.add(R.drawable.green);
    images.add(R.drawable.violet);
    images.add(R.drawable.orange);
    images.add(R.drawable.yellow);

}

現在,當我單擊特定的星形(或者可以在onCreate方法中)時,應將其相應地隨機化。

在隨機imageview中隨機繪制:

    View.OnClickListener tapHandler = new View.OnClickListener() 
    {

        @Override
        public void onClick(View v) 
        {
            // TODO Auto-generated method stub


             imageadd();
                viewadd();


               Random rng = new Random(); 
                List<Integer> generated = new ArrayList<Integer>();
                for (int i = 0; i < 12; i++)
                {
                  while(true)
                    {

                      Integer next = rng.nextInt(imageViews.size()) ;
                      if (!generated.contains(next))
                        {
                         generated.add(next);
                         ImageView iv = (ImageView)findViewById(imageViews.get(next));
                         iv.setImageResource(images.get(next));
                         images.remove(next);
                         imageViews.remove(next);
                         break;
                        }

                    }

                }

         }

    };

所以我想知道在for循環中使用的最后一個drawable是什么,以便可以在其中設置標簽?

只需保留循環外最后一個ImageView的引用即可。

// last image reference
Drawable lastImg = null;

List<Integer> generated = new ArrayList<Integer>();
for (int i = 0; i < 12; i++) {
    while (true) {
        Integer next = rng.nextInt(imageViews.size());
        if (!generated.contains(next)) {
            generated.add(next);
            ImageView iv = (ImageView) findViewById(imageViews
                    .get(next));
            iv.setImageResource(images.get(next));

            // skip when i = 0
            if (lastImg != null) {
                iv.setTag(lastImg); // tag the last drawable
            }

            // store the current drawable
            lastImg = getResources().getDrawable(images.get(next));

            images.remove(next);
            imageViews.remove(next);
            break;
        }
    }
}

並且,除非它有其他用途,否則您也可能只調用imageadd()viewadd() ,而不是在每個onClick()上調用。 你只需要跳過調用images.remove()imageViews.remove()從你的循環內即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM