次のアクティビティでは、テーブルを作成し、それに動的にボタンを追加します。ボタンはxmlで定義されていません。ボタン(「b」というラベルが付いている)がクリックされた場所を知りたいです。つまり、 i と j で jClickable を i に設定しようとしましたが、テーブルが作成された後にクリックされると、最終的な値に設定されます。
aFromA、aToA、mobileA、LnameA、FnameA、fullName、aIDa はすべて文字列配列です。分割やその他の操作のために膨大なコード ブロックが必要になるため、初期化部分を削除しました。
事前に感謝します。コードは次のとおりです。
public class ViewAssistants extends Activity implements OnClickListener{
Button back;
Button b;
EditText et;
Button change;
TextView text;
String time;
int jClicked;
int i;
int j;
UserFunctions userFunction;
String [] aFromA;
String [] aToA;
String [] mobileA;
String [] LnameA;
String [] FnameA;
String [] fullName;
String [] aIDa;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.viewassistants);
text = (TextView) findViewById(R.id.textView1);
TableLayout tableLayout = (TableLayout) findViewById(R.id.myTableLayout);
userFunction = new UserFunctions();
String DR_ID = userFunction.drID;
userFunction.viewingAssistants(DR_ID);
String ifFull =userFunction.full;
int ifFullint = Integer.parseInt(ifFull);
if (ifFullint == 1){
text.setText("");
TableRow tableRow;
TextView textView;
for (i = 0; i < (FnameA.length)+1; i++) {
tableRow = new TableRow(getApplicationContext());
for (j = 0; j < 5; j++) {
if(i==0){
textView = new TextView(getApplicationContext());
textView.setBackgroundResource(R.drawable.nm);
textView.setTextColor(Color.BLACK);
tableRow.addView(textView);
switch (j){
case 0:textView.setText(" ID ");break;
case 1:textView.setText(" Name ");break;
case 2:textView.setText(" Mobile "); break;
case 3:textView.setText(" Shift starts "); break;
case 4:textView.setText(" Ends "); break;
default: textView.setText("..");
}
}
else
{
b = new Button(getApplicationContext());
b.setBackgroundResource(R.drawable.nm);
b.setTextColor(Color.BLACK);
tableRow.addView(b);
for(int w=0;w<FnameA.length;w++){
fullName[w]= FnameA[w]+" "+LnameA[w];
}
switch (j){
case 0:b.setText(""+aIDa[i-1]+"");break;
case 1:b.setText(""+fullName[i-1]+"");break;
case 2:b.setText(""+mobileA[i-1]+""); break;
case 3:b.setText(""+aFromA[i-1]+""); b.setOnClickListener(this);break;
case 4:b.setText(""+aToA[i-1]+"");b.setOnClickListener(this);break;
default: b.setText("..");
}
}
}
tableLayout.addView(tableRow);
}
}
else{
text.setText("NO PATIENTS");
System.out.println("fel elseeee");
}
back = (Button) findViewById(R.id.back);
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// TODO Auto-generated method stub
Intent dashboard = new Intent(getApplicationContext(), loginAsDr.class);
// Close all views before launching Dashboard
dashboard.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(dashboard);
// Close Registration Screen
finish();
}
});
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
et=(EditText)findViewById(R.id.shiftChange);
et.setVisibility(View.VISIBLE);
change=(Button) findViewById(R.id.change);
change.setVisibility(View.VISIBLE);
change.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// TODO Auto-generated method stub
jClicked=i;
time=et.getText().toString();
et.setText(" ");
Log.d("TIME IS",time+" "+jClicked);
}
});
}
}
そしてここにxmlがあります:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<HorizontalScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#3b3b3b" >
<TableLayout
android:id="@+id/myTableLayout"
android:layout_width="match_parent"
android:layout_height="390dp" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="NO DOCTORS" />
</TableLayout>
</HorizontalScrollView>
<Button
android:id="@+id/back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_marginBottom="40dp"
android:text="BACK" />
<EditText
android:id="@+id/shiftChange"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:visibility = "gone"
android:ems="10" />
<Button
android:id="@+id/change"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_toRightOf="@+id/shiftChange"
android:visibility = "gone"
android:text="Change please" />
</RelativeLayout>
コードが少し長い場合は申し訳ありません。前もって感謝します。