努力保存SharedPreference中Listview中存在的所有值

时间:2015-05-08 07:29:35

标签: android listview android-listview

在SharedPreference中保存Custom ListView中的所有值时面临问题。

实际上,我的布局包含一个复选框,textview(自定义列表视图)和一个复选框(select_all),用于选择我的自定义列表视图中的所有数据。 单击select_all复选框时,自定义列表视图中显示的所有值都被选中,但只有前13个值存储在我的SharedPreference中。 这是我的程序片段,

        selectAll.setOnClickListener(new OnClickListener() {


        @Override
        public void onClick(View v) {

            boolean isChecked = selectAll.isChecked();

            if (isChecked) {


                for (int i = 0; i < exportItems.getChildCount(); i++) {

                    listViewLayout = (LinearLayout) exportItems
                            .getChildAt(i);
                    cb = (CheckBox) listViewLayout
                            .findViewById(R.id.export_chk);

                    if (strTypes.equals("Orders/Invoices")) {
                        cb.setChecked(true);
                        ordRefNo = ordersList.get(i)
                                .getHhTran_referenceNumber();
                        supporter.saveOrderInPreference(ordRefNo, 1);

                    } else if (strTypes.equals("Credit Note")) {
                        cb.setChecked(true);
                        cnRefNo = creditNoteList.get(i)
                                .getHhTran_referenceNumber();
                        supporter.saveCreditNoteInPreference(cnRefNo, 1);
                    } else {
                        cb.setChecked(true);
                        docNo = receiptList.get(i).getHhReceipt_docnumber();
                        supporter.saveReceiptInPreference(docNo, 1);
                    }

                }

                orderAdapter.notifyDataSetChanged();
                creditNoteAdapter.notifyDataSetChanged();
                receiptAdapter.notifyDataSetChanged();
            } else {

                unCheckAll();
            }
        }
    });

所以,任何人都可以帮助我存储我的Listvew中存在的所有值 SharedPreference。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

ListView不适合接收用户的输入。因为您必须使用输入保存所有视图。如果你不这样做,滚动后一切都会清除。我认为ScrollView更适合这种情况。

无论如何,如果你想使用ListView,你就不能信任视图。因此,在每次操作之后,您必须填充数据(使用ListView)并调用notifyDataSetChanged()到ListView刷新本身。

PS 1:你应该认为ListView只显示我的观点,它不能操纵它们。这是重点。

PS 2:使用监听器和TextWatcher捕获输入并保存数据。

PS 3:我使用了Listview和EditTexts,我警告你,这是痛苦的屁股:)