我通过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());
}
答案 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());
}
但就像我说的那样,这可能对你自己没有帮助。查看滚动列表或回收器视图和适配器的文档。周围有许多例子。