2014-10-07 33 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

相關問題