淺野です。以下のように動的にボタンを作成した場合にbutton[array].setOnClickListenerから
onClick(View view)でのクリックは同じになってしまいます。arrayは最終的に5になることとなどは全て理解できるのですが、どの
ような考えとコーディングでボタンの配列に対応した番号を取得したらいいのか分かりません。このコーディングではToastではき出せば5が帰りま
す。
多分、このような質問は多々あるのでは無いかと思いますが、私には現段階で考えつきませんので、ご教授をお願い申し上げます。
AutoButtonActivity.java
package
ftptest_002.syakazuka.com;
import android.app.Activity;
import android.content.res.Configuration;
import android.os.Bundle;
import android.view.Display;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.Toast;
public class AutoButtonActivity extends Activity{
LinearLayout linearLayout;
private int array;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.autobutton);
ScrollView scr_view = (ScrollView)findViewById(R.id.s_view);
int max=5;
Button button[] =new Button[max];
int height = (ScreenHeigth()-100)/max;
int width = (ScreenWidth()-100)/max;
LinearLayout ll = new LinearLayout(this);
ll.setOrientation(ll.VERTICAL);
for(array=0;array<max;array++){
button[array] = new Button(this);
button[array].setText("ボタン["+ array + "]");
button[array].setHeight(height);
button[array].setWidth(width);
button[array].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view){
//Intent intent = new
Intent(ButtonListSample.this, Next.class);
//Log.v("","");
//startActivity(intent);
Toast.makeText(AutoButtonActivity.this,"Number =" +
array ,Toast.LENGTH_SHORT).show();
}
});
ll.addView(button[array]);
}
s_view.addView(ll);
}
private int ScreenWidth(){
WindowManager wm = (WindowManager)getSystemService(WINDOW_SERVICE);
Display disp = wm.getDefaultDisplay();
int w = disp.getWidth();
return (w);
}
private int ScreenHeigth(){
WindowManager wm = (WindowManager)getSystemService(WINDOW_SERVICE);
Display disp = wm.getDefaultDisplay();
int w = disp.getHeight();
return (w);
}
private LinearLayout.LayoutParams createParam(){
WindowManager wm = (WindowManager)getSystemService(WINDOW_SERVICE);
Display disp = wm.getDefaultDisplay();
int w = disp.getWidth();
int h = disp.getHeight() / 2;
return new LinearLayout.LayoutParams(w, h);
}
}
autobutton.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="
http://schemas.android.com/apk/res/
android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ScrollView
android:id="@+id/s_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
/>
</LinearLayout>