我试图通过添加自定义布局视图来显示大约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.
}
答案 0 :(得分:0)
阅读ViewHolder模式并在此处查看示例 - http://www.vogella.com/tutorials/AndroidListView/article.html
它基本上做的是它不会将所有项目加载在一起;相反,它只加载屏幕上显示所需的对象。