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番目の位置のトグルをクリックしたとします..3をyourpositionとして保存し、スクロールするとgetViewが呼び出され、トグルをyesにチェックする条件を満たします

于 2012-12-04T07:01:52.273 に答える