我有这段代码:
private ImageView d1;
private ArrayList<Integer> listaImagenes = new ArrayList<Integer>();
private ArrayList<String> listaFrases = new ArrayList<String>();
private Button button;
private Integer contador = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.rellenarImagenes();
setContentView(R.layout.imagentonas);
d1 = (ImageView) findViewById(R.id.imagenes01);
while (contador < listaImagenes.size()) {
d1.setImageResource(listaImagenes.get(contador));
button = (Button) findViewById(R.id.botoncillo);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
contador++;
}
});
}
}
private void rellenarImagenes() {
listaImagenes.add(R.drawable.a01);
listaImagenes.add(R.drawable.a02);
listaImagenes.add(R.drawable.a03)
}
我正在尝试做一个循环,当我按下按钮,增加contador和d1更改图像。 但它不起作用,应用程序背景仍然是黑色而且不起作用。
答案 0 :(得分:1)
在onclick方法中删除while循环和setimage。
答案 1 :(得分:0)
您期望修改变量contador
的值会导致数组项发生变化。
请注意,在代码行d1.setImageResource(listaImagenes.get(contador));
中,get
函数会收到int
。因此,在它被调用时,它会收到一个值,而不是对Integer
的引用。更改contador
的值时,不会更改用于获取数组中索引的值。
即使值发生了变化,d1
仍将使用相同的资源。
您需要在onClickListener中执行的操作是添加代码来设置图像。
的内容public void onClick(View v) {
++contador;
if (contador >= listaImagenes.size())
{
contador=0;
}
//you'll probably need to modify the next line to be able to access the button variable.
//one way to do it is to use a final variable in the onCreate method that creates this OnClickListener
button.setImageResource(listaImagenes.get(contador));
}
不需要while
循环。你的代码正在做的是将图像设置为数组的3个项目,一个接一个,并添加一个新的点击监听器3次。
答案 2 :(得分:0)
我将尝试回答并指出您在代码中存在的一些缺陷。
让我尝试编写代码
int contador=1;
@Override
public void onCreate (Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.imagentonas);
context=this;
d1=(ImageView)findViewById(R.id.imagenes01);
button=(Button)findViewById(R.id.botoncillo);
button=(Button)findViewById(R.id.botoncillo);
button.setOnClickListener( new View . OnClickListener () {
public void onClick ( View v ) {
int id = context.getResources().getIdentifier("a"+contador,
"drawable", context.getPackageName());
d1.setImageResource(id);
contador++;
}
});
}
注意:int id = context.getResources().getIdentifier("a"+contador,"drawable", context.getPackageName());
这里使用你可以访问drawable的字符串,这解决了任意数量的连续drawable的问题。
希望你明白这个概念......
由于