gpt4 book ai didi

java - 如何知道从随机数组列表中使用的最后一个可绘制对象是什么?

转载 作者:行者123 更新时间:2023-11-30 02:24:49 25 4
gpt4 key购买 nike

我有 2 个列表,一个用于 ImageView 的数组和一个用于可绘制对象的数组:

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() 即可。

关于java - 如何知道从随机数组列表中使用的最后一个可绘制对象是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28016556/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com