【问题标题】:How do you get the text from all the items in the layout如何从布局中的所有项目中获取文本
【发布时间】:2016-03-23 23:47:26
【问题描述】:

我有一个包含多个 TextView、EditView 和一个按钮的视图。我想遍历所有项目并获取每个项目的文本值。我不能只按名称逐个浏览,因为取决于用户之前在屏幕上所做的事情,取决于屏幕上显示的项目。而且,每次可以有不同数量的项目。我动态创建项目并设置每个文本视图的文本,但用户将信息输入到编辑视图中。 所以我不仅需要知道来自 textview 的文本,还需要知道用户放入 editview 的文本,我需要确保用户输入到正确的 textview。因此,如果我有一个显示“2x2”的文本视图并且用户输入“4”,我需要确保我知道 4 进入 2x2 文本视图。 我不知道从哪里开始寻找,所以我没有尝试任何东西。 如果有人能指出我正确的方向,那很好。 顺便说一句,这不是家庭作业。它仍然是我正在开发的同一个应用程序,它已经摧毁了我数周。 谢谢。

【问题讨论】:

标签: java android textview


【解决方案1】:

您可以遍历子项,然后检查类类型。

// you need the ID of the layout - in this example the ID is myLayout
// or you get the layout object instance otherwise
LinearLayout layoutMyLayout = (LinearLayout) findViewById(R.id.myLayout);
if (layoutMyLayout != null)
{
  for (int i = 0; i < layoutMyLayout.getChildCount(); x++)
  {
    View viewChild = layoutMyLayout.getChildAt(i);
    if (viewChild instanceof EditText)
    {
        // get text from edit text
        String text = ((EditText)viewChild).getText().toString();
        //TODO: add rest of the logic
    } else if(viewChild instanceof TextView) {
        // get text from text view
        String text = ((TextView)viewChild).getText().toString();
        //TODO: add rest of the logic
  }
}

您只需要实例,然后从那里发布这些方法。非常直接。

【讨论】:

  • 我将 if 条件改为使用 instanceof 然后比较类名。这也是我删除链接的原因,因为我觉得这样更好。
  • 谢谢。我会试试看,我会告诉你的。
  • 大部分情况下是的。但是在阅读了大量的东西之后,我想我会用另一种方式来解决这个问题。因为我动态创建了文本视图和编辑文本,所以我只是将它们命名为文本的值。因此,如果 textview 中的文本值为“Jeff”,则 edittext id 将为“Jeff”。或更多超过 R.id.Jeff。我的问题是试图弄清楚如何构建语句的 text.setId() 部分。对不起,我漫无目的,但是,是的,我确实使用了它,它确实对我有用。谢谢。
猜你喜欢
  • 2019-08-21
  • 1970-01-01
  • 2012-03-11
  • 2017-08-08
  • 2012-06-22
  • 1970-01-01
  • 1970-01-01
  • 2021-08-09
相关资源
最近更新 更多