Android 如何根据JSON文件的内容动态地将TextView添加到布局中?

Android 如何根据JSON文件的内容动态地将TextView添加到布局中?,android,json,android-layout,kotlin,Android,Json,Android Layout,Kotlin,我是android开发新手。我有一个包含许多对象的JSON文件,如何为JSON文件中的每个对象向ScrollView添加新的TextView?每个TextView将存储JSON对象中包含的数据。目前我知道的向布局添加视图的唯一方法是在活动布局XML文件中定义视图,但这不允许我自动生成视图,我必须手动创建视图并手动定义它们 谢谢 编辑:链接副本没有任何答案,但此处提供了答案。@Lewiky,以下是用于将TextView动态添加到ScrollView的.java文件代码。您可以根据json对象的长度

我是android开发新手。我有一个包含许多对象的JSON文件,如何为JSON文件中的每个对象向ScrollView添加新的TextView?每个TextView将存储JSON对象中包含的数据。目前我知道的向布局添加视图的唯一方法是在活动布局XML文件中定义视图,但这不允许我自动生成视图,我必须手动创建视图并手动定义它们

谢谢


编辑:链接副本没有任何答案,但此处提供了答案。

@Lewiky,以下是用于将TextView动态添加到ScrollView的.java文件代码。您可以根据json对象的长度替换循环。同时发布xml布局文件代码以供参考

public class Scrollview extends AppCompatActivity {
    ScrollView scrollview;
    LinearLayout linearLayout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_scrollview);


        scrollview = (ScrollView) findViewById(R.id.scrollView);
        linearLayout=(LinearLayout)findViewById(R.id.scrllinear);
        TextView textView;

        LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);


        for (int i = 0; i < 5; i++) {
            textView = new TextView(this);
            textView.setText("I=" + i);
            linearLayout.addView(textView, lp);
        }

    }

}
公共类Scrollview扩展了AppCompative活动{
滚动视图滚动视图;
线性布局线性布局;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u滚动视图);
scrollview=(scrollview)findViewById(R.id.scrollview);
linearLayout=(linearLayout)findViewById(R.id.scrllinear);
文本视图文本视图;
LinearLayout.LayoutParams lp=新的LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_内容,LinearLayout.LayoutParams.WRAP_内容);
对于(int i=0;i<5;i++){
textView=新的textView(此);
textView.setText(“I=“+I”);
linearLayout.addView(文本视图,lp);
}
}
}
XML代码

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/relative"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ScrollView
        android:id="@+id/scrollView"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

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

        </LinearLayout>

    </ScrollView>

</RelativeLayout>

希望这有帮助,
快乐编码:)

@Lewiky,下面是用于将TextView动态添加到ScrollView的.java文件代码。您可以根据json对象的长度替换循环。同时发布xml布局文件代码以供参考

public class Scrollview extends AppCompatActivity {
    ScrollView scrollview;
    LinearLayout linearLayout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_scrollview);


        scrollview = (ScrollView) findViewById(R.id.scrollView);
        linearLayout=(LinearLayout)findViewById(R.id.scrllinear);
        TextView textView;

        LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);


        for (int i = 0; i < 5; i++) {
            textView = new TextView(this);
            textView.setText("I=" + i);
            linearLayout.addView(textView, lp);
        }

    }

}
公共类Scrollview扩展了AppCompative活动{
滚动视图滚动视图;
线性布局线性布局;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u滚动视图);
scrollview=(scrollview)findViewById(R.id.scrollview);
linearLayout=(linearLayout)findViewById(R.id.scrllinear);
文本视图文本视图;
LinearLayout.LayoutParams lp=新的LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_内容,LinearLayout.LayoutParams.WRAP_内容);
对于(int i=0;i<5;i++){
textView=新的textView(此);
textView.setText(“I=“+I”);
linearLayout.addView(文本视图,lp);
}
}
}
XML代码

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/relative"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ScrollView
        android:id="@+id/scrollView"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

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

        </LinearLayout>

    </ScrollView>

</RelativeLayout>

希望这有帮助,
快乐编码:)

我假设您有一个
activity\u layout.xml
SomeActivity
,它们都与setContentView(R.layout.activity\u layout)方法有关系,在重写方法
onCreate
中调用,如下所示:

override fun onCreate(savedInstanceState: Bundle?)
{
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_layout)
}
现在,您需要查找一些
视图组
,例如:
线性布局
列表视图
(更好)。使用方法
findviewbyd(R.id.some\u group\u view)
并使用同一类强制转换

使用实例变量(假设您使用
ListView
)映射Json对象,在迭代器对象中提取所需信息,并在
ArrayAdapter
中传递数据

有关make应用程序,请参阅Android开发者指南。他们有一个非常有用的文档




我假设您有一个
activity\u layout.xml
SomeActivity
,它们都与setContentView(R.layout.activity\u layout)方法有关系,在重写方法
onCreate
中调用,如下:

override fun onCreate(savedInstanceState: Bundle?)
{
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_layout)
}
现在,您需要查找一些
视图组
,例如:
线性布局
列表视图
(更好)。使用方法
findviewbyd(R.id.some\u group\u view)
并使用同一类强制转换

使用实例变量(假设您使用
ListView
)映射Json对象,在迭代器对象中提取所需信息,并在
ArrayAdapter
中传递数据

有关make应用程序,请参阅Android开发者指南。他们有一个非常有用的文档




尝试使用
列表视图
回收视图
可能的重复项,您必须使用xml来定义视图。您可以做的一件事是根据json中对象的数量添加视图(将它们的可见性设置为“不可见”或“消失”),并为每个对象检查有效性,然后使该视图可见尝试使用
listView
RecyclerView
可能的重复项您必须使用xml来定义视图。您可以做的一件事是根据json中对象的数量添加视图(将它们的可见性设置为不可见或消失),并为每个对象检查有效性,然后使该视图可见