我在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);
}
});
答案 0 :(得分:2)
每次将屏幕滚出屏幕时,切换按钮的状态将从webservice数据中清除为默认值,因为所有当前未显示的行的视图都将被删除,并将使用默认值重新创建。您需要保存状态切换按钮。例如,如果使用ArrayAdapter<Object>
,则可以将其保存在与此行关联的对象中。
答案 1 :(得分:0)
保存你的View位置...并在getView()中写下这段代码
if(yourposition==position)
tbtnStatus.setChecked(true);
假设您单击了第3个位置切换...保存3作为您的位置,当您将滚动getView被调用并且将满足条件检查您的切换到是