我为列表制作了自定义布局,其中包含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加载初始值,但是在滚动期间也会保存更改。