我在列表中有两个复选框的活动,我必须将复选框的每个值传递给另一个活动并进行检查,我不能使用意图来传递它,因为这两个活动不是紧接在一起。
在这种情况下,我将如何将值存储在数组中并在另一个活动中进行检索
感谢所有人,我现在已经完成了,我正在发布它。
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;
}
}
答案 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>