सबसे पहले, मैं डेटाबेस से पुनर्प्राप्त लेनदेन (पंक्ति) को हटाने में सक्षम नहीं हूं
लाइन 61 arg0.getItemAtPosition(arg2)
. का परिणाम कास्ट कर रहा है Cursor
. के लिए , लेकिन वापसी प्रकार शायद HashMap
. है (जैसा कि लॉगकैट आउटपुट में कहता है)। आम तौर पर आपको एक Cursor
मिलता है डेटाबेस क्वेरी से।
यदि आप प्रत्येक डेटाबेस पंक्ति के लिए आईडी को HashMap
. में डालते हैं जब आप इसे बना रहे हों, तब आप उस आईडी को अपने deleteTransaction()
पर पास कर सकेंगे अपने onClick
. में कॉल करें प्रतिस्पर्धा। तो, आपको चाहिए
temp.put("Id", localCursor.getInt(localCursor.getColumnIndex("_id")));
में getAllTransaction()
, और फिर अपना onClick()
. संशोधित करें ऐसा कुछ करने का तरीका:
localDbCrud.open();
HashMap itemMap = (HashMap)localAdapter.getItem(arg2);
int item_id = Integer.parseInt((String)itemMap.get("Id"));
DbCrud.deleteTransaction(item_id);
localDbCrud.close();
मैं arg2
. का नाम बदलने का भी सुझाव दूंगा (और अन्य) स्पष्ट नाम रखने के लिए ताकि कोड का पालन करना आसान हो।
दूसरे, मुझे यह जानने की जरूरत है कि प्रविष्टि को हटाने के बाद सूचीदृश्य को कैसे ताज़ा किया जाए
आप notifyDataSetChanged()
पर कॉल कर सकते हैं ListView
. को रीफ़्रेश करने के लिए अपने एडॉप्टर पर आपके द्वारा डेटासेट में परिवर्तन करने के बाद।
संपादित करें:कृपया ध्यान दें कि SimpleAdapter
स्थिर डेटा के लिए है, इसलिए आपका माइलेज भिन्न हो सकता है। सबसे अच्छा समाधान शायद एक अलग प्रकार के एडेप्टर पर स्विच करना है, जैसे कि ArrayAdapter
, या एक नया SimpleAdapter
बनाएं हर बार जब आप डेटासेट बदलते हैं।