2014-10-07 66 views
0

我是创建android应用程序和java编程的新手。以下代码来自我看过的教程。从随机获取setImageResource的结果并将其设置为字符串

所以在我的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那么也应该等于字母F

TextView的请帮忙。:(

+1

哦,你应该看看gridview/listview,这对于这么简单的需求来说代码太多了 – 2014-10-07 14:53:11

+0

我在使用这个之前使用了gridview。但我不知道如何用图像填充它。 – 2014-10-07 15:00:46

+0

@ A.S。有关我的问题的任何建议?我找不到任何关于此的教程。我真的需要帮助。 – 2014-10-07 15:02:46

回答

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); 
       } 
      } 
     }; 

编辑:

申报`字符串generatedString = “”;在你的班级里;

然后我点击进行了更改。

+0

嗨! :)我在TAG上有错误。我创建了一个局部变量(作为给出的建议之一)。这样对吗?代码工作,但只为imagebutton1 :(我已经做了你说的,但它只适用于button1 :( – 2014-10-07 19:04:10

+0

是TAG只是局部变量。你把image1.setOnClickListener(myCommoClickListner);和image1.setId(myPics [这应该是你的随机数));对于你所有的ImageButtons。 – Chitrang 2014-10-07 19:06:52

+0

哦,对不起,我没有改变那部分X(它的工作:D非常感谢你:)))但我可以问最后一个事情。我怎样才能使用相同的textview“添加”这些字符串彼此? – 2014-10-07 19:14:02

相关问题