1

我在列表视图中使用 ToggleButtons,我从 web 服务数据设置了切换按钮的状态,现在我更改了切换按钮的状态,但是当我滚动列表视图时它被重置为以前的状态。

我在适配器类中使用了以下内容。

tbtnStatus=(ToggleButton)view.findViewById(R.id.togglebtn);
tbtnStatus.setTag(new Integer(position));  

tbtnStatus.setOnCheckedChangeListener(null);


tbtnStatus.setOnCheckedChangeListener(new OnCheckedChangeListener() {

    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        // TODO Auto-generated method stub
        String update_status;
        String current_status=buttonView.getText().toString();
         if(current_status.equals("ON"))
         {
             update_status="NO";
         }

         else
         {
             update_status="YES";
         }

        String res=UrltoValue.getValuefromUrl(DataUrls.updateindividualstaus+"?pilotid="+DataUrls.pilotid+"&friendid="+friendid[position]+"&status="+update_status);
     }
});
4

2 回答 2

2

每次您将切换按钮滚动出屏幕时,切换按钮的状态都会从 Web 服务数据中清除为默认值,因为所有当前不可见行的视图都将被删除,并将使用默认值重新创建。您需要保存切换按钮的状态。例如,您可以将其保存在与该行关联的对象中,如果您使用ArrayAdapter<Object>.

于 2012-12-04T06:55:50.227 回答
0

当您检查相应视图的切换按钮时保存您的视图位置...并在 getView() 中编写此代码

    if(yourposition==position)
    tbtnStatus.setChecked(true);

假设您单击了第三个位置切换..将 3 保存为您的位置,并且当您滚动时调用 getView 并将满足条件检查您的切换为是

于 2012-12-04T07:01:52.273 回答