我的代码工作正常。但问题是我从Web服务收到数据后。当我启动循环以创建多行时,我的活动将停止5到10秒。可以从服务中接收的最大记录不超过100个。
我如何解决这个问题?不停止我的活动它应该生成多个记录。因为我已经有一些迭代记录了。
LinearLayout parentLayout = (LinearLayout)findViewById(R.id.sheet);
LayoutInflater layoutInflater = getLayoutInflater();
View view;
JSONArray receivedData = (JSONArray) json.get("RESPONSE_DATA");
for(int i=0; i<receivedData.length(); i++){
view = layoutInflater.inflate(R.layout.row, parentLayout, false);
((TextView)view.findViewById(R.id.title1)).setText( (((JSONObject)receivedData.getJSONObject(i)).get("title1")).toString() );
((TextView)view.findViewById(R.id.title2)).setText( (((JSONObject)receivedData.getJSONObject(i)).get("title2")).toString() );
ToggleButton button = (ToggleButton)view.findViewById(R.id.button);
button.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
View parentView = (View)buttonView.getParent();
if(isChecked){
parentView.setBackgroundColor(0x00000000);
}else{
parentView.setBackgroundColor(0xffDF9292);
}
}
});
parentLayout.addView(view);
}
答案 0 :(得分:1)
这里有一个使用适配器的好地方。 有关详细信息,请参阅Android开发者的this link。
您的活动可能会停止,因为您在UI线程上做了太多工作。我还想象,由于目前有太多的UI对象存在,它会变得迟钝。当您使用带适配器的列表时,所有这些都将得到修复。
[修改强>
我认为this tutorial from Vogella可能是一个更好的起点。
答案 1 :(得分:0)
活动暂停,因为您在主活动线程上运行代码。我建议你使用异步的东西,尝试在AsyncTask内实现你的代码(但在onPostExecute中附加视图)。 另一种方法是添加ListView并使用自定义ArrayAdapter this is an example加载数据。
我希望我帮助过你