0

OnClickListeners用に別のクラスがあります。ボタンをクリックしたときに配列リストにアイテムを追加し、2回目にクリックしたときにアイテムを削除したいと思います。私はここにフレームワークを持っています:

public void onClick(View v) {
        Button button = (Button)v;
        if(isClicked) {
            button.setText("Enabled");
            Log.v("Spirit: ", v.getTag() + "");
            spirits_list.add(v.getTag() + "");
            isClicked = false;
        } else {
            button.setText("Disabled");
            spirits_list.remove(v.getId()-1);
            isClicked = true;
        }



    }

上部にArrayListも初期化されていますが、ボタンをクリックするたびにArrayListが再初期化されます。どうすればこれを回避できますか?また、ArrayListをSharedPreferencesに保存できる必要があります-OnClickListenerからこれを行うにはどうすればよいですか?

4

1 に答える 1

0

あなたはあなた自身のクラスを使うので、あなたはクラスのメンバーにすべての良さを渡すことができます:

class MyListener implements View.OnClickListener {

    private ArrayList<Object> spirits_list;
    private Context ctx;

    public MyListener( Context ctx, ArrayList<Object> list ) {
        super();
        this.ctx = ctx;
        this.spirits_list = list;
    }

    public void onClick(View v) {
        Button button = (Button)v;
        if(isClicked) {
            button.setText("Enabled");
            Log.v("Spirit: ", v.getTag() + "");
            this.spirits_list.add(v.getTag() + "");
            isClicked = false;
        } else {
            button.setText("Disabled");
            this.spirits_list.remove(v.getId()-1);
            isClicked = true;
        }



    }

}

コンテキストにより、SharedPrefsにもアクセスできるようになります。次に、このビットを次のように呼び出すことができます。

view.setOnClickListener( new MyListener( this, spirits_list ) );
于 2012-12-31T05:29:26.677 に答える