我使用以下方法創建了三個圖像視圖: ImageView imagev = new ImageView(getActivity());如何用編程創建的視圖使用onclicklistener?
現在每當我點擊這些(他們每個人)我想從字符串數組中加載一些信息。問題是這些圖像視圖是使用另一個包含drawable的數組創建的。
所以我的問題是,如何知道它是可繪製的(其中之一),但我不知道這些按鈕的id,就我所知隨機生成的onclick?我正在考慮試圖嵌套這些imageviews,他們每個人都在linearlayout並附上onclicklistener對他們,但它似乎沒有效率和優雅的嘗試。
編輯:
public View onCreateView(LayoutInflater inflater,
ViewGroup container,
Bundle savedInstanceState){
View rootView = inflater.inflate(R.layout.majoraracane, container, false);
ImageView cardpicker = (ImageView)rootView.findViewById(R.id.cardpick);
ImageView imagev = new ImageView(getActivity());
cardpicker.setOnClickListener(this);
Resources resources = getResources();
imagesCard = resources.obtainTypedArray(R.array.MajorArcana);
names = resources.getStringArray(R.array.majorarcane);
mt = new MyTask();
mt.execute();
return rootView;
}
@Override
public void onClick(View view) {
switch(view.getId()) {
case R.id.cardpick:
rangen();
break;
}
}
public void GenNum(){
int min = 0;
int max = 21;
Random r = new Random();
i1 = r.nextInt(max - min + 1) + min;
String wtf = names[i1];
Log.e("random number", "generated " + i1);
if (Arrays.asList(haha).contains(i1)){
Log.e("HAHAH", "SAME NUMBER");
GenNum();
}
else {
ImageView imagev = new ImageView(getActivity());
mycards.add(i1);
int cor = i1;
haha = new Integer[mycards.size()];
mycards.toArray(haha);
imagev.setImageResource(imagesCard.getResourceId(cor, R.drawable.ace_of_cups));
int height = 230;
int width = 135;
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(width, height);
params.setMargins(5,5,5,5);
params.gravity = Gravity.CENTER;
imagev.setLayoutParams(params);
LinearLayout mycardslayout = (LinearLayout)getActivity().findViewById(R.id.mycardslayout);
imagev.animate().alpha(1.0f).setDuration(100).start();
mycardslayout.addView(imagev);
// imagesCard.recycle();
}
}
這是我如何解決它:創建INT NEWID 。 在創建新的imageview的過程中,我將newid增加了1。 然後在我的onclick中檢索了點擊項目的ID。之後進行比較。
這是它的樣子:
newid = newid +1;
imagev.setId(newid);
imagev.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int ccheck = imagev.getId();
if(ccheck == 1){
Log.e("Just clicked on", "first" + ccheck);
} else if(ccheck == 2){
Log.e("Just clicked on", "second" + ccheck);
} else if(ccheck == 3){
Log.e("Just clicked on", "third" + ccheck);
}
}
});
不是最好的實現,但它的工作。
添加您的工作! –
@AtefHares,在這裏你去,我的代碼 –
因爲我明白你想添加onClickListener到'imagev',是否正確? –