android - 动态创建的功能性可点击表格行

标签 android onclick tablelayout tablerow clickable

我看到了这个链接 (http://stackoverflow.com/questions/6603868/android-onclicklistener-and-table-layout),它似乎适用于提问者。话虽如此,这是我的情况。

我有一个 TableLayout,动态填充了四列数据。该行作为一个整体需要可点击,因为没有像上面链接的示例那样的按钮。

被点击的行需要传递它的第一列(第0列)的数据,这只是一个字符串。这是创建新行时调用的函数。

private void addLotTableRow(CharSequence [] row, int count) {
    final TableLayout table = (TableLayout) findViewById(R.id.lotsTableList);
    final TableRow tr = (TableRow) getLayoutInflater().inflate(R.layout.lotsrow, null);
    TextView tv;
    // Fill Cells
        tv = (TextView) tr.findViewById(R.id.lotCell1);//Cell 1: Lot Number
        tv.setText(row[0]);

        tv = (TextView) tr.findViewById(R.id.lotCell2);//Cell 2: Sample
        tv.setText(row[1]);

        tv = (TextView) tr.findViewById(R.id.lotCell3);//Cell 3: Inspected
        tv.setText(row[3]);

        tv = (TextView) tr.findViewById(R.id.lotCell4);//Cell 4: Total
        tv.setText(row[2]);

        table.addView(tr);
}

所以我最初尝试制作一个 tr.setOnClickListener(new View.OnclickListener() {blahblah});在此函数中,就在 table.addView(tr) 行之前。 “blah blah”当然是一个 onClick(View v) 函数。我本来只会得到最后一行的数据,不管我点击哪一行。现在,我正在尝试像上面的链接那样做,并在创建所有表行之后从更高的函数产生点击。我可能可以提供更多信息,但我认为人们现在可以从中得到这个想法!感谢您的帮助!

最佳答案

底线:我想通了!

基于我在问题中发布的链接的解决方案,我意识到我需要创建一个 textview 对象才能查看单元格的数据!所以这是我的代码,与上面保持不变的代码有关!

    int rowNumCount = table.getChildCount();
    for(int count = 1; count < rowNumCount; count++) {
        View v = table.getChildAt(count);
        if(v instanceof TableRow) {
            final TableRow clickRow = (TableRow)v;
            int rowCount = clickRow.getChildCount();
            v.setOnClickListener(new OnClickListener() {
                public void onClick(View v) {
                    Context context = getTabHost().getContext();
                    TableRow row = (TableRow)v;
                    TextView tv = (TextView)row.getChildAt(0);
                    CharSequence text = "Lot VALUE Selected: " + tv.getText();
                    int duration = Toast.LENGTH_SHORT;
                    Toast.makeText(context, text, duration).show();
                }
            });
        }
    }

就像我说的,我只需要获取第一列数据,因此 row.getChildAt(0);线!所以我知道可能还没有人有机会回答这个问题,但我希望我的回答能对以后的其他人有所帮助!

问题的基本原理,“为什么不只使用 ListView ?” 回答:我认为对于我所做的,表格格式看起来要好得多。

虽然我可能不会对我的代码设置做出巨大的改变,但我总是乐于听到可以帮助改进我的代码的改变!我爱这个社区!

关于android - 动态创建的功能性可点击表格行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11658377/

相关文章:

android - 通过蓝牙发送字符串,我需要一些信息

android - 什么布局用于绘制类似垄断的游戏板

安卓警告 "This TableRow view is useless (no children, no background, no id)"

android - 切换案例中的 Activity 上下文

java - Android 版本 2.2 的错误对话框

javascript - jQuery:toggleClass,多个 <td> 元素,只有一个突出显示

javascript - 如何按类别点击获得最接近的跨度值

javascript - 如何在鼠标单击时使 div 扩展(通过向外滑动)宽度

android - 如何在 android 中设置表格布局的样式

java - 无法将数据从 FireBase 加载到 Recycler View 中