【问题标题】:How do I dynamically add TextViews to my layout based on the content of a JSON file?如何根据 JSON 文件的内容将 TextViews 动态添加到我的布局中?
【发布时间】:2017-06-02 14:14:08
【问题描述】:

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

谢谢

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

【问题讨论】:

  • 尝试使用listViewRecyclerView
  • 你必须使用xml来定义视图。您可以做的一件事是根据 json 中的对象数量添加视图(将其可见性设置为不可见或消失),并为每个对象检查有效性,然后使该视图可见

标签: android json android-layout kotlin


【解决方案1】:

@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);
        }

    }

}

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>

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

【讨论】:

    【解决方案2】:

    我假设你有一个 activity_layout.xmlSomeActivity 并且两者都具有 setContentView(R.layout.activity_layout) 方法的关系,在覆盖的方法 onCreate 中调用,如下所示:

    override fun onCreate(savedInstanceState: Bundle?)
    {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_layout)
    }
    

    现在,您需要查找一些ViewGroup,例如:LinearLayoutListView(更好)。使用方法findViewById(R.id.some_group_view) 并使用相同的类进行强制转换。

    使用实例变量(假设您使用ListView)映射您的Json 对象并在Iterator 对象中提取所需的信息并将数据传递给您ArrayAdapter

    请参阅 Android 开发者指南了解制作应用程序。他们有一个非常有用的文档。

    Android developer Main page
    Android developer Guides
    Android developer ListView

    【讨论】:

      猜你喜欢
      • 2015-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      相关资源
      最近更新 更多