ListView中的EditText在滚动时获取初始值

时间:2016-06-26 20:22:04

标签: android listview cursor adapter simplecursoradapter

我为列表制作了自定义布局,其中包含TV,ET,按钮。 我使用SimpleCursorAdapter来绑定数据库中的TV和ET的值。

该按钮用于更改ET值。假设我已将值从4更改为10.(4是从DB加载的),我希望4更新为10。 但是当我滚动并再次返回该项时,ET再次加载了DB值。

将数据加载到listView中的代码。

    final Cursor allDataCursor=adapterClass.getAllSubHeadsInfo(getSqlDate(incomingDate),BasicActivity.selectedHeadNumber);
    String[] from=new String[]{helper.COL_ID, helper.COL_JOIN_ENTRY_ID, helper.COL_SUB_HEAD, helper.COL_PRICE, helper.COL_QUANTITY};
    int[] to=new int[]        {R.id.tvItemNo, R.id.tvEntryNo,           R.id.tvItemName,     R.id.tvRate,      R.id.etQuantity};

    SimpleCursorAdapter simpleCursorAdapter= null;
    try {
        simpleCursorAdapter = new SimpleCursorAdapter(AddLessActivity.this, R.layout.list_add_less, allDataCursor, from, to, 0)
        {
            @Override
            public void bindView(final View view, final Context context, Cursor cursor) {
                super.bindView(view, context, cursor);

                //  final int row_id=cursor.getInt(cursor.getColumnIndex(helper.COL_ID));
                Button btnPlus= (Button) view.findViewById(R.id.btnPlus);
                Button btnMinus= (Button) view.findViewById(R.id.btnMinus);

                btnPlus.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        EditText etQuantity= (EditText) view.findViewById(R.id.etQuantity);
                        int qty= Integer.parseInt( etQuantity.getText().toString());
                        etQuantity.setText(String.valueOf(++qty));
                    }
                });

                btnMinus.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        EditText etQuantity= (EditText) view.findViewById(R.id.etQuantity);
                        int qty= Integer.parseInt( etQuantity.getText().toString());
                        if(qty>0) {
                            etQuantity.setText(String.valueOf(--qty));
                        }
                        else {
                            Toast.makeText(context, "Quantity cannot be less than 0", Toast.LENGTH_LONG).show();
                        }
                    }
                });
            }
        };
        simpleCursorAdapter.notifyDataSetChanged();
    } catch (Exception e) {
        e.printStackTrace();
    }
    listView.setAdapter(simpleCursorAdapter);}

现在这会正确加载数据,但是因为我使用了SimpleCursorAdapter,所以对DbValues进行了绑定。我希望DbValues加载初始值,但是在滚动期间也会保存更改。

0 个答案:

没有答案