当数据来自JSON解析时,如何动态设置水平滚动中的textview数量?

时间:2016-03-09 09:59:26

标签: android json

我通过URL获取JSON数据并在水平滚动视图内的文本视图中显示它。

            JSONArray ja = response.getJSONArray("results");

                        ArrayList<Details> myModelList = new ArrayList<Details>();

                        for (int i = 0; i < ja.length(); i++) {

                            JSONObject jsonObject = ja.getJSONObject(i);
                            mymodel = new Details();
                            mymodel.id = Integer.parseInt(jsonObject.optString("id").toString());
                            mymodel.url = jsonObject.getString("resLink");
                            mymodel.resType = jsonObject.getString("resType");
                            mymodel.name = jsonObject.getString("resName");

                            myModelList.add(mymodel);


                            setData(myModelList); 

我在文本视图中显示我的数据,但它只显示第一个数据

    private void setData(List<Details> mList) {
    for (int i =0; i <=mymodel.getResType().length();i++)
    {
 TextView textView = (TextView) findViewById(R.id.textView);
    textView.setText(mymodel.getResType());


}

2 个答案:

答案 0 :(得分:0)

你一次又一次地在for循环中初始化mymodel所以我认为它只包含一个值也是最后一个(不是第一个)。

如果这是问题,请尝试在for循环外声明以下内容。

mymodel = new Details();

答案 1 :(得分:0)

所以你的代码中存在很多问题:

1)您总是替换相同TextView的文本。通常使用滚动视图使用适配器备份它们,将数据放入列表中,然后将其添加到适配器,然后依靠滚动列表动态创建可填充的TextView。如果滚动视图中有已知数量的视图,并且您想要避免使用适配器,请确保它们都具有唯一ID,以便您可以找到它们。

2)第二个问题是你在循环中调用setData。首先完成循环,然后调用方法(尽管如果你做适配器的事情,你不必真的这样做)

3)你的setData方法有各种各样的错误。如果你想将一个列表传递给一个方法,然后遍历它,你可以这样做:

    for (Details d : list) {
        TextView textView = (TextView) findViewById(R.id.textView);
        textView.setText(d.getResType());
    }

但就像我说的那样,这可能对你自己没有帮助。查看滚动列表或回收器视图和适配器的文档。周围有许多例子。