Java 如何在android中再次打开arraylist时显示预选复选框

Java 如何在android中再次打开arraylist时显示预选复选框,java,android,Java,Android,首先,我使用复选框选择一些数组项,并在第二个活动中显示它。之后,我再次打开我的第一个活动ArrayList,但我的复选框被清除 下面是我的代码 public class Occassion extends AppCompatActivity implements View.OnClickListener,AdapterView.OnItemClickListener { ListView listView_occassion; ArrayAdapter<String> adapte

首先,我使用复选框选择一些数组项,并在第二个活动中显示它。之后,我再次打开我的第一个活动
ArrayList
,但我的复选框被清除

下面是我的代码

public class Occassion extends AppCompatActivity implements View.OnClickListener,AdapterView.OnItemClickListener {

ListView listView_occassion;
ArrayAdapter<String> adapterOccassion;
Button mButtonOccassionNext;
int position;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_occassion);

    listView_occassion = (ListView) findViewById(R.id.occassion_listview);
    mButtonOccassionNext = (Button) findViewById(R.id.btn_occassion_next);

    listView_occassion.setOnItemClickListener(this);

    String[] Occassion = getResources().getStringArray(R.array.occassion_array);

    adapterOccassion = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_multiple_choice, Occassion);


    listView_occassion.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
    listView_occassion.setAdapter(adapterOccassion);
    mButtonOccassionNext.setOnClickListener(this);

}

@Override
public void onClick(View view) {

    Intent intent = new Intent(getApplicationContext(),Filters.class);
    startActivity(intent);

}

@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

    SparseBooleanArray checked = listView_occassion.getCheckedItemPositions();

    ArrayList<String> selectedItemsOccassion = new ArrayList<String>();
    Utils.occassionArrayList.clear();

    for (i = 0; i < checked.size(); i++) {
        // Item position in adapter
        int position = checked.keyAt(i);
        // Add sport if it is checked i.e.) == TRUE!
        if (checked.valueAt(i))
            // selectedItemsFlavour.add(adapterFlavour.getItem(position));
            Utils.occassionArrayList.add(adapterOccassion.getItem(position));
    }

}
和我的数组列表外接程序String.xml

<string-array name="occassion_array">
    <item>Birthday</item>
    <item>Wedding</item>
    <item>Anniversary</item>
    <item>Celebration</item>
    <item>Get Well Soon</item>
    <item>House warming</item>
    <item>Valentines Day</item>
    <item>Diwali</item>
    <item>Friendship Day</item>
    <item>X-Mas</item>
    <item>New Year</item>
    <item>Random</item>
</string-array>

生日
婚礼
周年纪念
庆祝活动
早日康复
暖房
情人节
排灯节
友谊日
X-Mas
新年
随机的
任何帮助对我都是非常好的。

创建一个类,如:

class Occasion {
public String name;
public boolean status;
}
然后创建一个arraylist:

ArrayList<Occasion> dataList = new ArrayList<>();

公共无效onItemClick(AdapterView AdapterView、View视图、int i、long l){

现在您只需更改适配器类。在该类中的getView()下,您必须检查每个项目的状态并相应地选中复选框

希望这能帮到你。

检查一下

for(int i = 0 ; i<adapterOccassion.size ;i++)
{
if(Utils.occassionArrayList.contains(adapterOccassion.getItem(i)))
   {
       // set checked 
   }
}

用于(int i=0;iSir..正在执行您的答案,但当我再次转到我的阵列列表时,黑色的复选框未选中。这意味着当我选中生日和婚礼复选框时,我的文本视图给出正确的结果,再次转到我的列表阵列时,它将为空未选中生日和wddingHey我已编辑了我的答案,请执行此操作。为此,请创建array列表。当用户选中复选框时,在列表中添加项目。是。我正在创建我的arraylist“Utils.ocCasionArrayList”,并且我的所选项目也在下一个活动文本视图中添加并显示结果。但是当我再次打开我的arraylist时,它未选中私有复选框所选项目。
String[] occassion = getResources().getStringArray(R.array.occassion_array);

for(int i=0; i < occassion.lenght(); i++){

   String name = occasion[i];
   Occasion obj = new Occasion();
   obj.name = name;
   obj.status = getItemStatus(name);
   datalist.add(obj);

}
private boolean getItemStatus(String name) {

String items = getSharedPreferences("pref", 0).getString("items", "");
if(items.contains(name){
    return true;
}
return false;

}
@Override
    String selectedItemName = dataList.get(i).name;
String items = getSharedPreferences("pref", 0).getString("items", "");

if(!dataList.get(i).status) {

    if(items.equals("")) {

        items = selectedItemName;

    } else {

        items = items +","+ selectedItemName;

    }

} else {

    items = items.replace(selectedItemName, "");

}

SharedPreferences.Editor editor = getSharedPreferences("pref", 0).edit();
editor.putString("items", items);
    editor.apply();

dataList.get(i).status = !dataList.get(i).status;
adapter.notifyDataSetChanged();

}
for(int i = 0 ; i<adapterOccassion.size ;i++)
{
if(Utils.occassionArrayList.contains(adapterOccassion.getItem(i)))
   {
       // set checked 
   }
}