0

我的 OnClickListeners 有一个单独的类。我想在单击按钮时将项目添加到数组列表,并在第二次单击时将其删除。我在这里有框架:

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 回答