为每个 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