Android ArrayList自动清除

时间:2015-05-14 11:42:28

标签: android arraylist

这是我遇到的一个奇怪的问题,

我正以这种方式从网络服务获得回复

"course": [
                {
                    "id": 1,
                    "cou_name": "Engineering",
                    "L1": [
                        {
                            "id": 3,
                            "cou_name": "B.Tech",
                        },
                        {
                            "id": 4,
                            "cou_name": "M.Tech",
                        }]
                  },
                  { ...... } ]

我已经创建了POJO类来以这种方式处理这个响应

public class FilterCourseDetail {

    public static final String ID = "id";
    public static final String COU_NAME = "cou_name";
    public static final String LEVEL_ONE = "L1";

    public int id;
    public String courseName;

    public ArrayList<FilterCourseDetail> mLevelOneArrayList = new ArrayList<>();


 public FilterCourseDetail(JSONObject object) {

        setId(object.optInt(ID));
        setCourseName(object.optString(COU_NAME));

try {
            JSONArray jsonLevelOneArray = object.optJSONArray(LEVEL_ONE);
            if(jsonLevelOneArray != null){
                for (int i = 0; i < jsonLevelOneArray.length(); i++) {
                    mLevelOneArrayList.add(new FilterCourseDetail(jsonLevelOneArray.getJSONObject(i)));
                }
            }


        } catch (Exception e) {
            e.printStackTrace();
        }
}

//Normal getter setter

public ArrayList<FilterCourseDetail> getLevelOneArray() {
    return this.mLevelOneArrayList;
}    

}

我将以下列方式存储

private ArrayList<FilterCourseDetail> mFilterCourseList = new ArrayList<>();
JSONArray jsonSearchFilterArray = jsonSearchFilterObject.getJSONArray("course");

for (int i = 0; i < jsonSearchFilterArray.length(); i++) {
                                mFilterCourseList.add(new FilterCourseDetail(jsonSearchFilterArray.getJSONObject(i)));
                            }

检索它:

private ArrayList<FilterCourseDetail> mFilterLevelOneArray = new ArrayList<>();
mFilterLevelOneArray = mFilterCourseList.get(position).getLevelOneArray();

问题: 当我第一次检查mFilterCourseList的大小时,没关系,

再次使用它
mFilterLevelOneArray = mFilterCourseList.get(position).getLevelOneArray();

并检查大小,它返回0,表示它已被自动清除。

我不明白这一点。这也是处理内部JSONArray的正确方法吗?我错的时候请帮帮我

0 个答案:

没有答案