如何将复选框值从一个活动存储到另一个活动

时间:2013-02-27 11:44:11

标签: android android-listview android-checkbox

我在列表中有两个复选框的活动,我必须将复选框的每个值传递给另一个活动并进行检查,我不能使用意图来传递它,因为这两个活动不是紧接在一起。

在这种情况下,我将如何将值存储在数组中并在另一个活动中进行检索

感谢所有人,我现在已经完成了,我正在发布它。

         int i = 0;
        checkBox = new CheckBox[getItemPR.size()];
        Constants.INDEX_TEMP_NEW=new int[getItemPR.size()];// stoing in array[]
        while (i < getItemPR.size()) {

            ITEM dtItem = getItemPR.get(i);

            TableLayout table11;
                table11 = (TableLayout) LayoutInflater.from(this).inflate(
                        R.layout.itemoverview2, null);
                checkBox[i] = (CheckBox) table11.findViewById(R.id.checkBox1);

                checkBox[i].setId(i);
                checkBox[i]
                        .setOnCheckedChangeListener(new OnCheckedChangeListener() {

                            @Override
                            public void onCheckedChanged(
                                    CompoundButton buttonView,
                                    boolean isChecked) {

                            onSetcheckboxchanged(buttonView.getId());                               
                            }

                        });
                if (Constants.INDEX_TEMP_NEW[i] == 0) {
                    checkBox[i].setChecked(true);

                } else {
                    checkBox[i].setChecked(false);
                }

    public void onSetcheckboxchanged(int k) {

        if (checkBox[k].isChecked()) {              
            Constants.INDEX_TEMP_NEW[k] = 0;

        } else {
            Constants.INDEX_TEMP_NEW[k] = 1;
        }       
}

3 个答案:

答案 0 :(得分:1)

我通常使用静态类/方法来处理这类事情,使用SharedPreferences

public static class Hal {
    private static final String PREFS   = "com.xxx.xxx.xxx";

    public static String getPreferenceString(Context ctx, String key) {
        SharedPreferences sharedPreferences = ctx.getSharedPreferences(Hal.PREFS, Activity.MODE_PRIVATE);
        return sharedPreferences.getString(key, "");
    }

    public static void setPreferenceString(Context ctx, String key, String val) {
        SharedPreferences sharedPreferences = ctx.getSharedPreferences(Hal.PREFS, Activity.MODE_PRIVATE);
        Editor preferencesEditor = sharedPreferences.edit();
        preferencesEditor.putString(key, val);
        preferencesEditor.commit();
        return;
    }
}

答案 1 :(得分:1)

您可以创建一个单例类来存储数组的值。 例如。 'Storage'类有getter,一个数组的setter。您可以在课程中设置数据:

public class Storage { 
private static Strorage strorageData = new Strorage ();
public static synchronized Strorage getInstance() {
        if (strorageData == null) {
            strorageData = new Strorage ();
        }
        return strorageData ;
    }
    // getter & setter

}

在您的活动中,您可以使用

访问此课程的对象
     private Storage storageData;
 storageData = Storage .getInstance();

在此通过使用getter获取数据。

答案 2 :(得分:1)

创建一个将扩展到Application类的java类,并通过调用 App.getInstance()来获取该类的对象,然后您可以从任何活动中设置或获取所选列表项。

public class App extends android.app.Application {
private static App app;
private ArrayList<Integer> checkedItemList;
private Activity activity;

@Override
public void onCreate() {
    super.onCreate();
    app = this;
}

public static App getInstance(){
    return app;
}

public void setCheckedItemList(ArrayList<Integer> checkedItemList){
    this.checkedItemList = checkedItemList;
}

public ArrayList<Integer> getCheckedItemList(){
    return this.checkedItemList;
}
}

现在在Android manifest.xml中的应用程序标记

下注册Application类
<application
    android:name=".App"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".YourActivity"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>