如何延迟Android中“for”关键字的循环?

时间:2015-09-18 06:41:05

标签: android

我试图通过添加自定义布局视图来显示大约400个项目数据。

但是当这样做时,屏幕会冻结一段时间(3~4秒)。

我认为这个原因是主线程忙于处理400个项目,因此无法刷新视图。

所以我想延迟“for”循环一秒钟(0.3~0.5秒)。

如何延迟“for”循环?

    LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    for (int idx = 0; idx < jArray.length(); idx++) {
        JSONObject jItemObj = jArray.getJSONObject(idx);

        View v = inflater.inflate(R.layout.task_taxi_11000_item, null);
        TextView tv_TsDateTime = (TextView) v
                .findViewById(R.id.tv_TsDateTime);
        TextView tv_Amt = (TextView) v.findViewById(R.id.tv_Amt);
        TextView tv_AuthNo = (TextView) v.findViewById(R.id.tv_AuthNo);
        TextView tv_SvcCdNm = (TextView) v.findViewById(R.id.tv_SvcCdNm);
        TextView tv_AppCoNm = (TextView) v.findViewById(R.id.tv_AppCoNm);

        if (jItemObj.has("TR_TM")) {
            tv_TsDateTime.setText(Convert.ComDate.strTime
                    .formatTimeDelimiter(jItemObj.getString("TR_TM")));
        }


        if (jItemObj.has("APP_NO"))
            tv_AuthNo.setText(jItemObj.getString("APP_NO"));
        if (jItemObj.has("AMT"))
            tv_Amt.setText(Convert.strAmount.format(jItemObj
                    .getString("AMT")) + "AMT");
        if (jItemObj.has("SVC_CD_NM"))
            tv_SvcCdNm.setText(jItemObj.getString("SVC_CD_NM"));
        if (jItemObj.has("APP_CO_NM"))
            tv_AppCoNm.setText(jItemObj.getString("APP_CO_NM"));

        mLlList.addView(v); // <== can't refresh layout.    
    }

1 个答案:

答案 0 :(得分:0)

阅读ViewHolder模式并在此处查看示例 - http://www.vogella.com/tutorials/AndroidListView/article.html

它基本上做的是它不会将所有项目加载在一起;相反,它只加载屏幕上显示所需的对象。