【问题标题】:How to click an specific TableRow within a TableLayout如何单击 TableLayout 中的特定 TableRow
【发布时间】:2012-07-05 08:56:45
【问题描述】:

我制作了自己的复合控件,该控件使用 TableLayout 显示数据网格,并根据绑定到它的对象数组以编程方式在循环中添加 Tablerows,现在我想选择具有特定数据的特定行,以便被一个方法使用。那么我怎样才能选择一个特定的行来检索它的数据来委托一个方法呢?

【问题讨论】:

  • 我有同样的问题,但我想在 TableRow 上使用 onItemClickListener,因为我想知道按下了哪一列。找不到如何将 TableRow 转换为支持 onItemClick 的东西的方法。有什么解决办法吗?

标签: android xamarin.android tablelayout tablerow


【解决方案1】:

你好,你可以试试这样的,

 // create a new TableRow

    TableRow row = new TableRow(this);
    row.setClickable(true);  //allows you to select a specific row

    row.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            v.setBackgroundColor(Color.GRAY);
            System.out.println("Row clicked: " + v.getId());

           //get the data you need
           TableRow tablerow = (TableRow)v.getParent();
           TextView sample = (TextView) tablerow.getChildAt(2);
           String result=sample.getText().toString();
        }
    });

更多信息请参考Android TableRow

【讨论】:

    【解决方案2】:

    我尝试了 Parth Doshi 的答案,发现它不太正确。 onClick中的view参数是一个TableRow,所以当v.getParent()被调用时,它会返回一个TableLayout对象,所以在转换为TableRow时会抛出异常。因此,对我有用的代码是:

    tableRow.setClickable(true);  //allows you to select a specific row
    
    tableRow.setOnClickListener(new OnClickListener() {
          public void onClick(View view) {
            TableRow tablerow = (TableRow) view; 
            TextView sample = (TextView) tablerow.getChildAt(1);
            String result=sample.getText().toString();
    
            Toast toast = Toast.makeText(myActivity, result, Toast.LENGTH_LONG);
            toast.show();
        }
    });
    

    【讨论】:

    • 谢谢!这绝对比标记为答案的效果更好
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-30
    • 1970-01-01
    • 1970-01-01
    • 2012-05-17
    • 1970-01-01
    相关资源
    最近更新 更多