当前位置: 首页 > 知识库问答 >
问题:

表行中的OnClick listner

宣高朗
2023-03-14

我已经创建了一个包含TableView的活动。标头和表行通过活动动态地添加到tableview中。所有的工作都很好,但是我不明白如何将onClick listner添加到除头之外的所有行,并获取特定行中列的值。

这是活动的全部代码

public class ReportListActivity extends Activity {

    TableLayout report_table;
    TableRow tr_data;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_report_list);

        report_table=(TableLayout) findViewById(R.id.report_table);


        //---------------Table Header-----------------------------------------------
        TableRow tr_head = new TableRow(this);
        tr_head.setId(10);
        tr_head.setBackgroundColor(Color.GRAY);
        tr_head.setLayoutParams(new LayoutParams(
        LayoutParams.FILL_PARENT,
        LayoutParams.WRAP_CONTENT));


        TextView label_sr_no = new TextView(this);
        label_sr_no.setId(20);
        label_sr_no.setText("S.No.");
        label_sr_no.setTextColor(Color.WHITE);
        label_sr_no.setPadding(5,5,5,5);
        tr_head.addView(label_sr_no);// add the column to the table row here

        TextView label_test_name = new TextView(this);
        label_test_name.setId(21);// define id that must be unique
        label_test_name.setText("Test Name"); // set the text for the header 
        label_test_name.setTextColor(Color.WHITE); // set the color
        label_test_name.setPadding(5,5,5,5); // set the padding (if required)
        tr_head.addView(label_test_name); // add the column to the table row here

        TextView label_test_date = new TextView(this);
        label_test_date.setId(21);// define id that must be unique
        label_test_date.setText("Date"); // set the text for the header 
        label_test_date.setTextColor(Color.WHITE); // set the color
        label_test_date.setPadding(5,5,5,5); // set the padding (if required)
        tr_head.addView(label_test_date); // add the column to the table row here



        report_table.addView(tr_head, new TableLayout.LayoutParams(
                LayoutParams.FILL_PARENT,
                LayoutParams.WRAP_CONTENT));

      //---------------Table Header-----------------------------------------------



        //--------------------Table Body---------------------------
        for (int i=1; i<=10; i++)
        {
            tr_data = new TableRow(this);
            tr_data.setId(10);
            tr_data.setBackgroundColor(Color.TRANSPARENT);
            tr_data.setLayoutParams(new LayoutParams(
            LayoutParams.FILL_PARENT,
            LayoutParams.WRAP_CONTENT));


            TextView sr_no = new TextView(this);
            sr_no.setId(20);
            sr_no.setText(""+i);
            sr_no.setTextColor(Color.BLACK);
            sr_no.setPadding(5,5,5,5);
            tr_data.addView(sr_no);// add the column to the table row here

            TextView test_name = new TextView(this);
            test_name.setId(21);// define id that must be unique
            test_name.setText("Speed Test 60(min) Demo-ST-01"); // set the text for the header 
            test_name.setTextColor(Color.BLACK); // set the color
            test_name.setPadding(5,5,5,5); // set the padding (if required)
            tr_data.addView(test_name); // add the column to the table row here

            TextView test_date = new TextView(this);
            test_date.setId(21);// define id that must be unique
            test_date.setText("12 Mar 2013"); // set the text for the header 
            test_date.setTextColor(Color.BLACK); // set the color
            test_date.setPadding(5,5,5,5); // set the padding (if required)
            tr_data.addView(test_date); // add the column to the table row here



            report_table.addView(tr_data, new TableLayout.LayoutParams(
                    LayoutParams.FILL_PARENT,
                    LayoutParams.WRAP_CONTENT));
        }

      //--------------------Table Body---------------------------


    }


}
<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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".ReportListActivity" >

    <ScrollView
        android:id="@+id/scrollView1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true" >

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >

            <TableLayout
                    android:shrinkColumns="0,1,2"
                    android:id="@+id/report_table" android:layout_weight="1" android:layout_height="wrap_content" android:layout_width="match_parent">
            </TableLayout>

        </RelativeLayout>

    </ScrollView>

</RelativeLayout>

我遵循了这个教程!

共有1个答案

尉迟栋
2023-03-14

您必须将SetonClickListener放在tr_data上,还必须将所有TextViewFinal

final TextView test_name = new TextView(this);
            test_name.setId(21);// define id that must be unique
            test_name.setText("Speed Test 60(min) Demo-ST-01"); // set the text for the header 
            test_name.setTextColor(Color.BLACK); // set the color
            test_name.setPadding(5,5,5,5); // set the padding (if required)
            tr_data.addView(test_name); // add the column to the table row here


 report_table.addView(tr_data, new TableLayout.LayoutParams(
                    LayoutParams.FILL_PARENT,
                    LayoutParams.WRAP_CONTENT));

            tr_data.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub

                    String test_name1= test_name.getText().toString();
                    Toast.makeText(getApplicationContext(), test_name1, Toast.LENGTH_LONG).show();
                }
            });
 类似资料:
  • 我的理解是,行键只不过是分区键,即日、小时列组成行键。 我的理解正确吗?有人能澄清这一点吗?

  • 问题内容: 如果我的行数超过10亿,应该使用哪种方式获取表中的行数? 更新:例如,如果上面的查询存在“超时问题”,是否有任何方法可以对其进行优化?如何更快地做到这一点? 问题答案: 如果需要准确的计数,则必须使用 如果您可以粗略计算,则可以使用分区中的行总和 如果您想对自己的内容感到有趣,可以执行以下操作

  • 问题内容: 我想从桌子上得到一个特殊的结果,我想找出可能的结果!我有一个像这样的表:(idA,idB,val)通过此值: 我想通过以下格式从此表中进行选择: 怎么可能? 注意:我进行了一些搜索,但没有找到任何东西,如果您知道一个好的关键词,这对我很有用。 问题答案: 您可以尝试以下查询: 如果您不知道数量,则可以使用此动态查询: 输出: 看到这个SQLFiddle

  • 我知道我可以在我的表单上创建一个绑定,以便能够访问和更新下表中的记录: 但这是通过从路由传递一个id来完成的 所以只有当我只需要向用户显示和更新一条记录/行时,这才有用。基本上就像一个博客条目,有一个标题,正文为一行。我只是想用户去的路线 /nav/edit/和它显示所有行的导航作为一个可编辑的输入发送回数据库。 我的问题是,如何从表中检索多行,并将它们的值显示到输入字段中,当用户编辑其字段时,这

  • 问题内容: 我有一个清单清单: 我想要以下格式的输出: 我已经按照以下方式尝试过,但是输出的方式不是理想的: 输出: 在更改打印调用以代替使用时: 输出: 有任何想法吗? 问题答案: 遍历原始列表中的每个子列表,并在打印调用中使用以下命令将其解压缩: 默认情况下,分隔设置为,因此无需显式提供分隔。打印: 在您的方法中,您要遍历每个子列表中的每个元素,并分别进行打印。通过使用您在打印调用中 解压缩

  • 问题内容: 我剩下两个表,“设备”和“单元”。设备定义设备的类型,单元是唯一的设备,它指向设备表中的一行,并定义其类型。 我现在正在寻找一种解决方案,以从“设备”中选择每种设备类型,并计算指向该设备的设备数量。我目前的解决方案面临的问题是 SQL : Scala Slick : 即使没有单位指向设备类型,我也得到至少1的计数结果。 如何在SQL中或最好在Slick中实现此计数? 问题答案: 您的S