从随机获取setImageResource的结果并将其设置为字符串

时间:2014-10-07 14:50:54

标签: 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 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.

请帮助。:(

1 个答案:

答案 0 :(得分:0)

我尝试过只有一个图像视图,而且静态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

现在在你的CommoClickListner中放置你的settext逻辑,通过匹配视图中的getId,

            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 =“”;在你班上;

然后我点击了一下。