我在我的數據庫中有一些值,並使用自定義光標適配器填充自定義Listview中的值。因此,當用戶點擊listView時,會打開一個新的活動並且他選擇該值或視圖的刪除按鈕應消失,並且應該刷新列表。從列表視圖中刪除視圖/值Android
我在SO上提到了很多答案,但他們都建議從數據庫中刪除值(這不是我想要的),有的使用ArrayList,並建議我將它與自定義數組適配器一起使用。但是我我正在使用光標適配器。
所以我的整個問題是如何刪除值或從列表視圖中刪除視圖?
的ListView項的onClick監聽器打開一個新的活動
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// Constants.ROW_NUMBER=position;
TextView getRecordID = (TextView) view.findViewById(R.id.recordID);
Constants.ROW_NUMBER = Integer.parseInt(getRecordID.getText().toString());
Intent editIntent = new Intent(this,NoteDisplay.class);
editIntent.putExtra(Constants.ROW_NAME,Constants.ROW_NUMBER);
startActivity(editIntent);
}
這是新的活動,並在菜單按鈕的按下記錄將被標記爲刪除,但不會從數據庫中刪除。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId())
{
case R.id.deletebutton:
DataBaseHelper deletedb = new DataBaseHelper(this);
int deletedata = deletedb.deleteAction(position,System.currentTimeMillis());
Intent dintent = new Intent(this,MainActivity.class);
dintent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(dintent);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
這是我的自定義光標適配器類,
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
return inflater.inflate(R.layout.customlistview, parent, false);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
//int getDeleteFlag is initialized above
getDeleteFlag = cursor.getInt(cursor.getColumnIndex(DELETE_FLAG));
if(getDeleteFlag==0)
{
ll = (LinearLayout)view.findViewById(R.id.listViewLayout);
setListViewHeight(ll,context);
if (cursor != null) {
getText = cursor.getString(cursor.getColumnIndex(NOTE_TITLE));
existsRecordID = cursor.getString(cursor.getColumnIndex(RECORD_ID));
datevalue = cursor.getLong(cursor.getColumnIndex(RECORD_DATE));
}
Date newdate = new Date(datevalue);
tv = (TextView) view.findViewById(R.id.content);
recordID = (TextView) view.findViewById(R.id.recordID);
dateET = (TextView) view.findViewById(R.id.date);
tv.setText(getText.trim());
recordID.setText(existsRecordID);
dateET.setText(dateFormatter.format(newdate));
}else{
Toast.makeText(context, "FALSE VALUE", Toast.LENGTH_SHORT).show();
}
}
我很困惑是否要刪除視圖或在該點的數值。
我有一個名爲「deleteflag」的行,在我的DB中存儲1 =>刪除了 0 =>未刪除。
所以只有具有1的值纔會被標記爲刪除。
編輯1:
我bindView()
方法上面的代碼不起作用
如果你只是從列表視圖中刪除,那麼它將被刪除,但它不會從數據庫中刪除,所以當你再次在該頁面時,你可以看到刪除的視圖(行),因爲它不會從數據庫中刪除 – Piyush
@Piyush如果我檢查'if(deleteflag == 0)'只有顯示視圖否則不顯示?如果是的話,這怎麼辦? –
您可以將該標誌存儲在數據庫中 – Piyush