Android 从random获取setImageResource的结果并将其设置为string
我是一名创建android应用程序和java编程的新手。下面的代码来自我看过的教程 因此,在untimed.xml中,我有16个ImageButton和1个TextView,还有一个包含listview的scrollview。 所以每个ImgBtn都有它的id=Button1,Button2。。。textView id是textHere。 在我的Untimed.java中Android 从random获取setImageResource的结果并将其设置为string,android,Android,我是一名创建android应用程序和java编程的新手。下面的代码来自我看过的教程 因此,在untimed.xml中,我有16个ImageButton和1个TextView,还有一个包含listview的scrollview。 所以每个ImgBtn都有它的id=Button1,Button2。。。textView id是textHere。 在我的Untimed.java中 import android.app.Activity; import android.os.Bundle; import
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageButton;
import android.widget.TextView;
public class Untimed extends Activity{
String hello;
TextView text;
ImageButton image1, image2, image3, image4, image5, image6, image7, image8, image9, image10, image11, image12, image13, image14, image15, image16;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.untimed);
final TextView text = (TextView) findViewById(R.id.textHere);
final ImageButton image1 = (ImageButton) findViewById(R.id.Button1);
final ImageButton image2 = (ImageButton) findViewById(R.id.Button2);
final ImageButton image3 = (ImageButton) findViewById(R.id.Button3);
final ImageButton image4 = (ImageButton) findViewById(R.id.Button4);
final ImageButton image5 = (ImageButton) findViewById(R.id.Button5);
final ImageButton image6 = (ImageButton) findViewById(R.id.Button6);
final ImageButton image7 = (ImageButton) findViewById(R.id.Button7);
final ImageButton image8 = (ImageButton) findViewById(R.id.Button8);
final ImageButton image9 = (ImageButton) findViewById(R.id.Button9);
final ImageButton image10 = (ImageButton) findViewById(R.id.Button10);
final ImageButton image11 = (ImageButton) findViewById(R.id.Button11);
final ImageButton image12 = (ImageButton) findViewById(R.id.Button12);
final ImageButton image13 = (ImageButton) findViewById(R.id.Button13);
final ImageButton image14 = (ImageButton) findViewById(R.id.Button14);
final ImageButton image15 = (ImageButton) findViewById(R.id.Button15);
final ImageButton image16 = (ImageButton) findViewById(R.id.Button16);
final int[] myPics = { R.drawable.lettera, R.drawable.letterb, R.drawable.letterc, R.drawable.lettere,R.drawable.letteri, R.drawable.lettero, R.drawable.letteru, R.drawable.letterd, R.drawable.letterf, R.drawable.letterg,R.drawable.letterh, R.drawable.letterj, R.drawable.letterk, R.drawable.letterl, R.drawable.letterm, R.drawable.lettern,R.drawable.letterp, R.drawable.letterq, R.drawable.letterqu, R.drawable.letterr, R.drawable.letters, R.drawable.lettert, R.drawable.letterv,R.drawable.letterw, R.drawable.letterx, R.drawable.lettery, R.drawable.letterz };
int rando = (int)(Math.random()* 27);
image1.setImageResource(myPics[rando]);
int rando1 = (int)(Math.random()* 27);
image2.setImageResource(myPics[rando1]); (... to image16)
image1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (!image1.equals(getResources(R.drawable.lettera))){
hello = "A";
text.setText(hello);
}
else{
if (!image1.equals(getResources(R.drawable.letterb))){
hello = "B";
text.setText(hello);
}
else{
if (!image1.equals(getResources(R.drawable.letterc))){
hello = "C";
text.setText(hello);
}
else{ .......(same codes for the rest)
}});
}
// I created this method because there are errors in getResources in the above codes.
protected Object getResources(int letterz) {
// TODO Auto-generated method stub
return null;
}
}
这段代码正在工作(我想),因为每当我点击第一张图片时,textview显示“A”,并且只显示字母A。
我想让它显示准确的值。如果显示的图像是字母F,则textview也应等于字母F
请提供帮助。(我只尝试了一个图像视图,也尝试了静态id,不是随机生成的。但这对您应该有用 为所有16个ImageButton设置这些,想法是使用setId
image1 = (ImageButton) findViewById(R.id.imgBtn1);
image1.setOnClickListener(myCommoClickListner); // Set myCommoClickListner for all 16
int rando = (int)(Math.random()* 27);
image1.setImageResource(myPics[rando]);
image1.setId(myPics[rando1]); // set id immediate after image button resource is set
现在,在CommonClickListner中,通过匹配视图中的getId,将settext的逻辑放入
OnClickListener myCommoClickListner = new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
// Log.i(TAG, "arg0.getTag().toString() = " + arg0.getTag().toString());
Log.i(TAG,"arg0.getId() = " + arg0.getId());
if(arg0.getId()==R.drawable.lettera){
Log.i(TAG,"arg0.getId() = " + arg0.getId());
generatedString = generatedString+ "A"; //[PLACEE RESPACTIVE CHARACTEER HERE]
text.setText(generatedString);
}
}
};
编辑:
在类中声明'String generatedString=“”
然后我在单击中进行了更改。哦,你应该看看gridview/listview,对于这样一个简单的需求,这太多代码了。我在使用这个之前尝试过使用gridview。但是我不知道如何用图像填充它。@a.S.对我的问题有什么建议吗?我找不到任何关于这个的教程。我真的需要帮助。看看这个:About public void onClick(View v){//TODO自动生成的方法存根if(!image1.equals(getResources(R.drawable.lettera)){hello=“A”;text.setText(hello);}else{if(!image1.equals(getResources(R.drawable.letterb)){hello=“B”;text.setText(hello);}…hi:)我在标记上有错误。我创建了一个局部变量(作为给出的建议之一)。是否正确?代码正在工作,但仅适用于imagebutton1:(我已经完成了您所说的操作,但它仅适用于button1:(是的标记只是局部变量。您是否放置了image1.setOnClickListener(MyCMOCClickListner)和image1.setId(myPics[这应该根据您的随机数]);谢谢你所有的图片按钮。哦,很抱歉我没有更改第X部分(它正在工作:D非常感谢:)),但我能问最后一件事吗?我如何才能“添加”在使用同一文本视图时,这些字符串相互关联?您的意思是说根据用户单击您想要生成字符串?是的。例如,我单击了按钮A和B。如何仅在一个文本视图上添加两个字符串?