0

我想从 arraylist 中一一获取值并将其设置为TextView,但我做不到。我的代码是:

try {
        // Getting Array of Contents
        jsonArrar = json.getJSONArray(TAG_CONTENTS);

        // looping through All Contents
        for(int i = 0; i < jsonArrar.length(); i++){
            JSONObject c = jsonArrar.getJSONObject(i);
            list = new ArrayList<String>();

            String id1=jsonArrar.getJSONObject(i).getString(TAG_ID);                

            list.add(id1);
        }

        Iterator<String> iterator = list.iterator();
        builder = new StringBuilder();
        while (iterator.hasNext()) {
            String string = iterator.next();                
            builder.append(string+"\n");

        }

        textView.setText(builder);

通过上述方式,我只得到最后一个值,欢迎任何人讲述它。

4

1 回答 1

1

您必须在循环之前声明列表,并且在for循环中只添加元素:

list = new ArrayList<String>();    
for(int i = 0; i < jsonArrar.length(); i++){
        JSONObject c = jsonArrar.getJSONObject(i);


        String id1=jsonArrar.getJSONObject(i).getString(TAG_ID);                

        list.add(id1);
}

使用您的方法,对于其中的每个元素jsonArrar都声明了一个新列表,因此您最终会获得jsonArrar.length()只有最后一个可以访问的列表(对于其他您不再有参考的列表)。

于 2013-03-03T19:54:04.973 回答