【问题标题】:checked and unchecked Checkbox with another Activiti's Listview使用另一个 Activiti 的 Listview 选中和取消选中的复选框
【发布时间】:2014-04-14 17:05:12
【问题描述】:

我有带复选框的列表视图。并将已检查的项目存储到另一个数组列表中。这是在另一个布局上设置的。但是当我回到当前活动并更改复选框的选择时,另一个活动的数组列表不会丢弃先前的选择。如何解决? 这是我的代码。

enno = (CheckBox) convertView.findViewById(R.id.titleTxt);
            enno.setText(arrStudentList.get(position).getEnno());
            enno.setOnClickListener( new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                     Log.e("dr","hello11");

                selectedStudents.add(String.valueOf(arrStudentList.get(position).getEnno()));

                    Log.e("dr",String.valueOf(selectedStudents.size()));
                     Toast.makeText(getApplicationContext(), String.valueOf(arrStudentList.get(position).getEnno()), Toast.LENGTH_SHORT).show();

............................
............................
public void onClick(View v) {
    SparseBooleanArray checked = listView.getCheckedItemPositions();


    for (int 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))
           selectedStudents.add(String.valueOf(arrStudentList.get(position).getEnno()));
    }

    String[] outputStrArr = new String[selectedStudents.size()];
    Log.e("dr","hello14");
    Log.e("dr",String.valueOf(selectedStudents.size()));

    for (int i = 0; i < selectedStudents.size(); i++) {
        outputStrArr[i] = selectedStudents.get(i);
        Log.e("dr","hello15");
    }

    Intent intent = new Intent(getApplicationContext(),
            ResultActivity.class);

    // Create a bundle object
    Bundle b = new Bundle();
    b.putStringArray("selectedStudents", outputStrArr);

    // Add the bundle to the intent.
    intent.putExtras(b);

    // start the ResultActivity
    startActivity(intent);

【问题讨论】:

    标签: android listview checkbox


    【解决方案1】:

    当您使用 ArrayList 移动到其他活动时,只需删除已经存在的先前数据。 在 ResultActivity.class 中,重写 onBackPressed 方法并编写代码以删除 ArrayList 中的所有数据。

       arrayList.remove(object);
    

    因此,如果您返回并单击按钮,将显示包含新数据的 ArrayList。检查这个。希望对你有帮助。

    【讨论】:

    • 但我不想删除所有数据。假设用户错误地选中了一个复选框并导航到 ResultAvtivity.class。并取消选中它,他/她应该回到主要活动并取消选中该复选框并再次导航到 ResultActivity。和其他选择应该是一样的。
    猜你喜欢
    • 1970-01-01
    • 2018-04-15
    • 2021-12-23
    • 1970-01-01
    • 1970-01-01
    • 2017-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多