为每个 Table 行设置 OnClickListener
Set OnClickListener For Each Table Row
我有使用 json 从服务器获取数据并在 table 中动态显示的源代码。我想让 table 行中的每个数据都可以点击。单击数据时,它将显示包含数据详细信息的新 activity。
这是我的代码:
for (Iterator i = penyakit.iterator(); i.hasNext();) {
Penyakit p = (Penyakit) i.next();
/** Create a TableRow dynamically **/
tr = new TableRow(this);
/** Creating a TextView to add to the row **/
String nomor = String.valueOf(no);
isikolom1 = new TextView(this);
isikolom1.setText(nomor);
isikolom1.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
isikolom1.setPadding(10, 10, 10, 10);
isikolom1.setGravity(Gravity.CENTER);
LinearLayout Ll = new LinearLayout(this);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.WRAP_CONTENT);
params.setMargins(0, 2, 2, 0);
Ll.addView(isikolom1, params);
tr.addView((View) Ll); // Adding textView to tablerow.
TextView isikolom2 = new TextView(this);
isikolom2.setText(p.getNama());
isikolom2.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
isikolom2.setPadding(10, 10, 10, 10);
isikolom2.setGravity(Gravity.CENTER);
idp = p.getId();
isikolom2.setClickable(true);
isikolom2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent in = new Intent(getApplicationContext(),
detail_penyakit.class);
// sending pid to next activity
in.putExtra(TAG_id, idp);
// starting new activity and expecting some response back
startActivityForResult(in, 100);
}
});
Ll = new LinearLayout(this);
params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.WRAP_CONTENT);
params.setMargins(0, 2, 2, 2);
Ll.addView(isikolom2, params);
tr.addView((View) Ll); // Adding textview to tablerow.
tl.addView(tr, new TableLayout.LayoutParams(
LayoutParams.MATCH_PARENT,
LayoutParams.WRAP_CONTENT));
no = no + 1;
}
当我单击 Table 行时,它会显示新的 activity 以及最后数据的详细信息。不是我单击的 Table 行中数据的详细信息。如何在我单击的 Table 行中显示数据的详细信息?谢谢你的建议。
您使用的变量 idp
是在迭代器外部定义的,因此在执行迭代器后,idp
的值将是 penyakit
的最后一个值的 id
.
所以在迭代器
中创建局部变量idp
我有使用 json 从服务器获取数据并在 table 中动态显示的源代码。我想让 table 行中的每个数据都可以点击。单击数据时,它将显示包含数据详细信息的新 activity。 这是我的代码:
for (Iterator i = penyakit.iterator(); i.hasNext();) {
Penyakit p = (Penyakit) i.next();
/** Create a TableRow dynamically **/
tr = new TableRow(this);
/** Creating a TextView to add to the row **/
String nomor = String.valueOf(no);
isikolom1 = new TextView(this);
isikolom1.setText(nomor);
isikolom1.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
isikolom1.setPadding(10, 10, 10, 10);
isikolom1.setGravity(Gravity.CENTER);
LinearLayout Ll = new LinearLayout(this);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.WRAP_CONTENT);
params.setMargins(0, 2, 2, 0);
Ll.addView(isikolom1, params);
tr.addView((View) Ll); // Adding textView to tablerow.
TextView isikolom2 = new TextView(this);
isikolom2.setText(p.getNama());
isikolom2.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
isikolom2.setPadding(10, 10, 10, 10);
isikolom2.setGravity(Gravity.CENTER);
idp = p.getId();
isikolom2.setClickable(true);
isikolom2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent in = new Intent(getApplicationContext(),
detail_penyakit.class);
// sending pid to next activity
in.putExtra(TAG_id, idp);
// starting new activity and expecting some response back
startActivityForResult(in, 100);
}
});
Ll = new LinearLayout(this);
params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.WRAP_CONTENT);
params.setMargins(0, 2, 2, 2);
Ll.addView(isikolom2, params);
tr.addView((View) Ll); // Adding textview to tablerow.
tl.addView(tr, new TableLayout.LayoutParams(
LayoutParams.MATCH_PARENT,
LayoutParams.WRAP_CONTENT));
no = no + 1;
}
当我单击 Table 行时,它会显示新的 activity 以及最后数据的详细信息。不是我单击的 Table 行中数据的详细信息。如何在我单击的 Table 行中显示数据的详细信息?谢谢你的建议。
您使用的变量 idp
是在迭代器外部定义的,因此在执行迭代器后,idp
的值将是 penyakit
的最后一个值的 id
.
所以在迭代器
idp