在线性布局中获取动态生成的TextView文本并将其存储在String数组中

时间:2013-08-29 04:19:02

标签: android android-linearlayout textview

如何在线性布局中获取textViews的文本? 我基本上将代码置于onSavedInstance下,在屏幕方向发生变化的情况下,我将在linearLayout中显示textViews。

我修改了以下代码

for (int i = 0; i < ll1.getChildCount(); i++) {


    }

作为

for (int i = 0; i < ll1.getChildCount(); i++) {
        TextView children = (TextView) ll1.getChildAt(i);
        String b1 = (String) children.getText().toString();
    }

我已尝试过上述代码,但未找到任何成功。

3 个答案:

答案 0 :(得分:1)

试试这个:

String[] bArray = new String[ll1.getChildCount()];

for (int i = 0; i < ll1.getChildCount(); i++) {
    TextView children = (TextView) ll1.getChildAt(i);
    String b = children.getText().toString();
    bArray[i] = b;
}

如果您的线性布局仅包含textviews,则可能会有效。否则,您必须提供所有文本视图ID,例如txtView1,txtView2等,并使用id获取它。

修改

要将所有孩子归为一个单独的字符串,请尝试以下方法:

StringBuilder sb = new StringBuilder(ll1.getChildCount());
for (int i = 0; i < ll1.getChildCount(); i++) {
    TextView children = (TextView) ll1.getChildAt(i);
    sb.append(children.getText().toString()+" ");
}
System.out.println(sb.toString());

希望它有所帮助。

答案 1 :(得分:0)

您可以使用droidQuery

$ d = $.with(lll).selectByType("android.widget.TextView");
String[] array = new String[d.size()];
int index = 0;
d.each(new Function() {
    public void invoke($ droidquery, Object... params){
        array[index] = droidquery.val().toString();
        index++;
});
//now use you array variable

答案 2 :(得分:0)

你可以使用这样的东西。在布局xml 文件中,将标记设置为txtview,如下所示

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:tag="txtview"
    android:text="@string/hello_world" />

<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:tag="txtview"
    android:text="TextView" />

<TextView
    android:id="@+id/textView3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:tag="txtview"
    android:text="TextView" />

<TextView
    android:id="@+id/textView4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:tag="txtview"
    android:text="TextView" />

并在活动

中使用以下代码
    LinearLayout ll1 = (LinearLayout) findViewById(your layout id);

    String[] bArray;
    StringBuilder stringBuilder = new StringBuilder();
    for (int i = 0; i < ll1.getChildCount(); i++) {
        if (ll1.getChildAt(i).getTag().equals("txtview")) {
            TextView children = (TextView) ll1.getChildAt(i);
            stringBuilder.append(children.getText().toString() + "!##!");
        }
    }
    bArray = stringBuilder.toString().split("!##!");