循环期间Android活动停止与充气机

时间:2015-08-11 09:48:17

标签: android android-activity layout-inflater

我的代码工作正常。但问题是我从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);
}

2 个答案:

答案 0 :(得分:1)

这里有一个使用适配器的好地方。 有关详细信息,请参阅Android开发者的this link

您的活动可能会停止,因为您在UI线程上做了太多工作。我还想象,由于目前有太多的UI对象存在,它会变得迟钝。当您使用带适配器的列表时,所有这些都将得到修复。

[修改

我认为this tutorial from Vogella可能是一个更好的起点。

答案 1 :(得分:0)

活动暂停,因为您在主活动线程上运行代码。我建议你使用异步的东西,尝试在AsyncTask内实现你的代码(但在onPostExecute中附加视图)。 另一种方法是添加ListView并使用自定义ArrayAdapter this is an example加载数据。

我希望我帮助过你