在我的活动中,我有一个ImageView
XML代码:
<!-- FOTO LATERAL! -->
<ImageView
android:id="@+id/simbolo_raca"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
<Button
android:id="@+id/button_save"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Ok. Seguinte Pergunta"
android:layout_gravity="right"
android:gravity="right"
android:paddingRight="30dip">
</LinearLayout>
这是活动:
public class QuestionarioActivityRaca extends Activity{ ImageView simbolo; int position; Button B_Save; List<Drawable> List_imagens = new ArrayList<Drawable>(); @Override public void onCreate(Bundle savedInstanceState) { simbolo = (ImageView) findViewById(R.id.simbolo_raca); B_Save = (Button) findViewById(R.id.button_save); position = 0; List_imagens.add(getResources().getDrawable(R.drawable.p1)); List_imagens.add(getResources().getDrawable(R.drawable.p2)); List_imagens.add(getResources().getDrawable(R.drawable.p3)); List_imagens.add(getResources().getDrawable(R.drawable.p4)); loadNewImage(position); B_Save.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { loadNewImage(position); position++; } }); } // I Use this method to load the Image public loadNewImage(int Page) { new Thread(new Runnable(){ @Override public void run(){ simbolo.post(new Runnable(){ @Override public void run() { simbolo.setImageDrawable(List_imagens.get(Page)); } }); } }).start(); }
第一次调用此方法时,(position = 0)图像不会加载。之后,图像正确加载。
第一次如何加载图片?
(我无法使用android:src="@drawable/x"
在XML中加载图像),因为图像可能随时都不同。
EDITED!
答案 0 :(得分:1)
您发布的代码示例存在许多问题。
喜欢用大写I来写int。
Int position;
不使用onClick中的方法发送参数:
public void onClick(View v) {
loadNewImage();
}
在XML和代码中还有几个。
每次执行此任务时是否有特定原因要运行新线程? 如果你真的需要一个线程,你必须在方法中将int声明为final。
但是,您应该使用下面的代码示例获得所需的结果。 你必须修改你的onClick,为你想要使用的任何drawable发送适当的int。
祝你好运。public class testactivity extends ActionBarActivity {
ImageView simbolo;
int position;
Button B_Save;
List<Drawable> List_imagens = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_testactivity);
simbolo = (ImageView) findViewById(R.id.simbolo_raca);
B_Save = (Button) findViewById(R.id.button_save);
position = 0;
List_imagens.add(getResources().getDrawable(R.drawable.ic_drawer));
List_imagens.add(getResources().getDrawable(R.drawable.ic_check));
List_imagens.add(getResources().getDrawable(R.drawable.ic_action_add_package));
List_imagens.add(getResources().getDrawable(R.drawable.ic_action_exception));
loadNewImage(position);
final Random rand = new Random();
B_Save.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
loadNewImage(rand.nextInt(4));
}
});
}
public void loadNewImage(final int page)
{
simbolo.setImageDrawable(List_imagens.get(page));
}
}
答案 1 :(得分:1)
首先点击按钮之前你调用这个函数来加载loadNewImage(position);
的初始图像,当点击按钮时你调用这个函数loadNewImage();
我猜它点击按钮时有效因为这个loadNewImage();
方法没问题且loadNewImage(int page);
不正常,因为它们是两个不同的函数。
如果您希望整数对象使用Integer position
或者使用int position
,请解决您的问题,请放开该主题。现在您的代码将正常工作