آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

حذف آیتم هم از لیست ویو هم از دیتابیس sqlite

Reza.M  11 سال پیش  11 سال پیش
0 0

دوستان و اساتید محترم ، سلام

یه لیست ویو دارم که اطلاعاتشو از بانک sqlite  میگیره

میخوام وقتی آیتم رو از لیست ویو حذف میکنم از بانک هم حذف بشه

اما متاسفانه هر کدی زدم جواب نگرفتم

البته بگم که آیتم از لیست ویو حذف میشه ولی از بانک حذف نمیشه

 

این صفحه نمایش لیست ویو م هستش

 public class ActivityMain extends Activity {

    public ArrayAdapter adapter;
    public String       category;


    @Override
    protected void onResume() {
        G.currentActivity = this;
        super.onResume();
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ListView lstContent = (ListView) findViewById(R.id.lstContent);
        adapter = new AdapterNote(G.notes);
        lstContent.setAdapter(adapter);

        Bundle extras = getIntent().getExtras();
        if (extras!=null && extras.containsKey("CATEGORY")) {
            category = extras.getString("CATEGORY");
	    Cursor cursor = G.database.rawQuery("SELECT * FROM book WHERE subject LIKE '" + category + "'", null);
	     /////////
	     G.notes.clear();
	     /////////
	     while (cursor.moveToNext()) {
	        StructNote book_title = new StructNote();
		book_title.title= cursor.getString(cursor.getColumnIndex("title"));
		G.notes.add(book_title);
	     }
	     cursor.close();
	     adapter.notifyDataSetChanged();
        }
	else{
	    finish();
	}
    }

}

لطفا دستور درست حذف از بانک رو بفرمایید

و اینکه این دستور حذف رو تو این صفحه باید استفاده کنم یا Adapte Note ؟

امیدوارم تونسته باشم منظورمو رسونده باشم

سپاسگزارم

 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
مجتبی یگانه  11 سال پیش
+3 0

شما تو رویداد کلیک آیتم ، یه تابع Delete بنویسم ، این تابع یه ورودی داره به اسم ID که در واقع ID اون آیتم در بانک هست ، با توجه به اینکه با حذف از لیست ویو مشکلی نداری ، باید یک کوئری به این شکل در بانک اجرا کنی .

G.database.exec("DELETE FROM book WHERE id="+ID);
0 0
یعنی با این حساب این دستور رو تو Adapter Note بنویسم ؟ (11 سال پیش)
پاسخ به سوال 
Reza.M  11 سال پیش
0 0

پس با این حساب باید تو اکتیویتیه Adapter note این دستور رو بنویسم دیگه آره ؟

در ضمن آی دی اون آیتمی که تو لیست ویو روش کلیک میکنیم رو چطور بدست بیارم که بتونم تو دستوری که نوشتی جایگزین کنم؟
توضیح : رویداد کلیک رو ، روی یه تصویر با نام imgDelete تنظیم کردم.

اینم Adapter Note

 public class AdapterNote extends ArrayAdapter<StructNote> {

    public AdapterNote(ArrayList<StructNote> array) {
        super(G.context, R.layout.adapter_notes, array);
    }


    public static class ViewHolder {

        public ViewGroup layoutRoot;
        public TextView  txtDescription;
        public ImageView    imgDelete;



        public ViewHolder(View view) {
            txtDescription = (TextView) view.findViewById(R.id.txtDescription);
            layoutRoot = (ViewGroup) view.findViewById(R.id.layoutRoot);
            imgDelete = (ImageView) view.findViewById(R.id.imgDelete);

        }


        public void fill(final ArrayAdapter<StructNote> adapter, final StructNote item, final int position) {
            txtDescription.setText(item.book_title);
imgDelete.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { adapter.remove(item); G.database.exec("DELETE FROM book WHERE id="+ID); }); } } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; StructNote item = getItem(position); if (convertView == null) { convertView = G.inflater.inflate(R.layout.adapter_notes, parent, false); holder = new ViewHolder(convertView); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.fill(this, item, position); return convertView; } }

 

 

0 0
شما تو StructNote یک فیلد ID بساز ، بعد هم اون فیلد رو میتونی به صورت item.id در همون نقطه که کوئری رو اجرا کردی استفاده کنی (11 سال پیش)
0 0
بله حالا حذف میشه . فقط یه مشکل دیگه ای بوجود اومد. بعد از اینکه بطور متوالی یکی دو تا از آیتم ها رو حذف میکنم، دیگه روی بقیه که کلیک میکنم حذف بشن ، هیچ عکس العملی نشون نمیده و حذف نمیشن. به نظرتون مشکل از کجاست؟ (11 سال پیش)
0 0
ببینید منظورم اینه که فقط آیتم اولی حذف میشه ، روی بقیه هیچ تاثیر ی نداره وقتی روی حذف آیتم ها کلیک میکنم. جای جالب اینجاست وقتی Back میزنم و از اکتیویتی خارج میشم و دوباره برمیگردم به همون لیست ویو دوباره بخوام آیتمی رو حذف کنم فقط برای یه بار و اونم اولین آیتمی که میخوام حذف بشه ، رو میتونم حذف کنم. (11 سال پیش)
0 0
نمی دونم ! ، شاید از بانک حذف میشه اما اداپتور رو notifyDataSetChanged نمی کنید ؟! (11 سال پیش)
0 0
داداش این notifyDataSetChanged رو دقیقا کجای کد بالا قرار بدم؟ (11 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .