Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在CardView中从TextView获取文本?_Java_Android_Gettext_Android Cardview_Cardview - Fatal编程技术网

Java 如何在CardView中从TextView获取文本?

Java 如何在CardView中从TextView获取文本?,java,android,gettext,android-cardview,cardview,Java,Android,Gettext,Android Cardview,Cardview,在cardwiew中,我有一个LinearLayout,其中有三个textview,我想从这些textview中获取文本。我的XML文件如下所示: <LinearLayout android:id="@+id/defense" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" an

cardwiew
中,我有一个
LinearLayout
,其中有三个
textview
,我想从这些textview中获取文本。我的XML文件如下所示:

 <LinearLayout
        android:id="@+id/defense"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal"
        >

        <android.support.v7.widget.CardView
            android:id="@+id/cardCB"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom"
            android:layout_weight="1"
            app:cardBackgroundColor="@android:color/transparent"
            app:cardElevation="0dp">

          <LinearLayout
              android:id="@+id/innerLayout"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical">

              <TextView
                  android:layout_width="match_parent"
                  android:layout_height="match_parent"
                  android:text="Rannochia"
                  android:textAlignment="center"
                  android:textStyle="bold"/>
              <TextView
                  android:layout_width="match_parent"
                  android:layout_height="match_parent"
                  android:text="78"
                  android:textAlignment="center"
                  android:textStyle="bold"/>
              <TextView
                  android:layout_width="match_parent"
                  android:layout_height="match_parent"
                  android:text="CB"
                  android:textAlignment="center"
                  android:textStyle="bold"/>

          </LinearLayout>
        </android.support.v7.widget.CardView>
       </LinearLayout>
     for (int i = 0; i < defense.getChildCount(); i++){
        String getName = ((CardView)defense.getChildAt(i)).getText().toString();
        id[i] = getName;
    }

然后我想迭代父LinearLayout中的所有CardView,并获取TextView。大概是这样的:

 <LinearLayout
        android:id="@+id/defense"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal"
        >

        <android.support.v7.widget.CardView
            android:id="@+id/cardCB"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom"
            android:layout_weight="1"
            app:cardBackgroundColor="@android:color/transparent"
            app:cardElevation="0dp">

          <LinearLayout
              android:id="@+id/innerLayout"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical">

              <TextView
                  android:layout_width="match_parent"
                  android:layout_height="match_parent"
                  android:text="Rannochia"
                  android:textAlignment="center"
                  android:textStyle="bold"/>
              <TextView
                  android:layout_width="match_parent"
                  android:layout_height="match_parent"
                  android:text="78"
                  android:textAlignment="center"
                  android:textStyle="bold"/>
              <TextView
                  android:layout_width="match_parent"
                  android:layout_height="match_parent"
                  android:text="CB"
                  android:textAlignment="center"
                  android:textStyle="bold"/>

          </LinearLayout>
        </android.support.v7.widget.CardView>
       </LinearLayout>
     for (int i = 0; i < defense.getChildCount(); i++){
        String getName = ((CardView)defense.getChildAt(i)).getText().toString();
        id[i] = getName;
    }
for(int i=0;i

但是我不能调用方法
getText().toString()像这样。如何从CardView中的这些文本视图中获取文本?

只需提供对TextView的引用即可

    for (int i = 0; i < defense.getChildCount(); i++){
        String getName = ((TextView)defense.getChildAt(i)).getText().toString();
        id[i] = getName;
    }
for(int i=0;i
只需提供对TextView的引用即可

    for (int i = 0; i < defense.getChildCount(); i++){
        String getName = ((TextView)defense.getChildAt(i)).getText().toString();
        id[i] = getName;
    }
for(int i=0;i
这里有这么多选项。
一,。为您的文本视图提供id
二,。在id为innerLayout的线性布局中使用

三,。当你的用户界面是动态的,你需要从国防部获取文本视图

for (int i = 0; i < defense.getChildCount(); i++){
        CardView card = defense.getChildAt(i);
        ViewGroup viewGroup = ((ViewGroup)card.getChildAt(0));
        for(int j=0;j<viewGroup.getChildCount();j++){
            String getName = ((TextView)viewGroup.getChildAt(j)).getText().toString();
            id[i] = getName;
        }
    }
for(int i=0;i1.为您的文本视图提供id

2.在id为innerLayout的线性布局中使用

3.当你的用户界面是动态的,你需要从国防部获取文本视图

for (int i = 0; i < defense.getChildCount(); i++){
        CardView card = defense.getChildAt(i);
        ViewGroup viewGroup = ((ViewGroup)card.getChildAt(0));
        for(int j=0;j<viewGroup.getChildCount();j++){
            String getName = ((TextView)viewGroup.getChildAt(j)).getText().toString();
            id[i] = getName;
        }
    }
for(int i=0;i对于(int j=0;j它不起作用,因为textview位于另一个视图组内,该视图组为@+id/innerLayout

我为你做了一个简单的函数

private void loopViews(ViewGroup view) {
for (int i = 0; i < view.getChildCount(); i++) {
    View v = view.getChildAt(i);

    if (v instanceof EditText) {
        // will be executed when its edittext
        Log.d("Check", "This is EditText");

    } else if (v instanceof TextView) {
        // will be executed when its textview,, and get the text..
        TextView x = (TextView) v;
        String aa = x.getText().toString();
        Log.d("Check", "This is TextView with text : " +aa);

    } else if (v instanceof ViewGroup) {

        // will be executed when its viewgroup,, and loop it for get the child view..
        Log.d("Check", "This is ViewGroup");
        this.loopViews((ViewGroup) v);
    }
}

希望它能帮助您:)

它不起作用,因为textview位于另一个视图组中,该视图组为@+id/innerLayout

我为你做了一个简单的函数

private void loopViews(ViewGroup view) {
for (int i = 0; i < view.getChildCount(); i++) {
    View v = view.getChildAt(i);

    if (v instanceof EditText) {
        // will be executed when its edittext
        Log.d("Check", "This is EditText");

    } else if (v instanceof TextView) {
        // will be executed when its textview,, and get the text..
        TextView x = (TextView) v;
        String aa = x.getText().toString();
        Log.d("Check", "This is TextView with text : " +aa);

    } else if (v instanceof ViewGroup) {

        // will be executed when its viewgroup,, and loop it for get the child view..
        Log.d("Check", "This is ViewGroup");
        this.loopViews((ViewGroup) v);
    }
}

希望它能帮助您……:)

谢谢!它工作完美,特别是当我有多个CardView时。谢谢!它工作完美,特别是当我有多个CardView时。