当我滚动列表视图时,ToggleButton状态被重置为上一个

时间:2012-12-04 06:43:13

标签: android android-listview togglebutton

我在listview中使用ToggleButtons,并且我从webservice数据设置togglebutton的状态,现在我改变了togglebutton的状态,但是当我滚动listview时它被重置为previous。

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

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);
     }
});

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

当你检查相应视图的切换按钮时,

保存你的View位置...并在getView()中写下这段代码

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

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