【问题标题】:Get row value on click from TextView in Table layout Android从表格布局Android中的TextView单击获取行值
【发布时间】:2022-02-04 19:12:57
【问题描述】:
TextView Edit = new TextView(this);
Edit.setClickable(true);
Edit.setPaintFlags(Edit.getPaintFlags()| Paint.UNDERLINE_TEXT_FLAG);
Edit.setText("Edit");

Edit.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

        Intent myIntent = new Intent(ViewTransactions.this,
                            UpdateTransaction.class);
        myIntent.putExtra("Id",acd);
        Toast.makeText(ViewTransactions.this, "This is my Toast message!"+ acd,
        Toast.LENGTH_LONG).show();
        startActivity(myIntent);
        finish();
    }
});

Edit.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT,
                    TableRow.LayoutParams.WRAP_CONTENT));
Edit.setPadding(5, 5, 5, 5);
Edit.setBackgroundColor(Color.GRAY);
Ll = new LinearLayout(this);
params = new LinearLayout.LayoutParams(TableRow.LayoutParams.MATCH_PARENT,
                    TableRow.LayoutParams.WRAP_CONTENT);
params.setMargins(0, 2, 2, 2);
//Ll.setPadding(10, 5, 5, 5);
Ll.addView(Edit, params);
tr.addView((View) Ll);

我已经动态创建了一个 TableRow,但我希望获取从 TableRow 中的 TextView 中单击的 TableRow 的 id。但是,每次我单击编辑或删除时,它将采用表格的最后一行而不是我选择的行。我看过其他论坛,但他们的论坛是整行而不是特定的单元格,即 TextView how my table looks like

【问题讨论】:

  • 使用列表视图可能会更好。
  • 我已经为我的表格做了很多工作,但我没有时间将其更改为 listview,因为您已经注意到我正在更新和删除
  • 欢迎任何帮助

标签: android


【解决方案1】:

您可以将每一行的 id 保存为“编辑”TextView 中的标签

 Edit.setTag(rowId);

然后当它被点击时检索它

 Edit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int rowId = (int) v.getTag();
            }
        });

【讨论】:

  • 非常感谢朋友
【解决方案2】:

在onClick方法中:

@Override
            public void onClick(View v) {
               String textFromView = ((TextView) v).getText();
               //TODO now do whatever you will with the text

【讨论】:

    【解决方案3】:
    for (int i = 0; i < rowCount; i++) {
        Android.Widget.TableRow row = (Android.Widget.TableRow)tableLayout.GetChildAt(i);
        for (int j = 0; j < columnCount; j++) {
            TextView cell = (TextView) row.GetChildAt(j);
            var value = cell.Text;
        }
    }
    

    【讨论】:

    • 请记住,Stack Overflow 不仅仅是为了解决眼前的问题,而是为了帮助未来的读者找到类似问题的解决方案,这需要了解底层代码。这对于我们社区的初学者和不熟悉语法的成员来说尤其重要。鉴于此,您能否edit 您的答案包括对您正在做什么的解释以及为什么您认为这是最好的方法?
    猜你喜欢
    • 2014-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-13
    • 1970-01-01
    • 2012-12-12
    • 2016-07-28
    相关资源
    最近更新 更多