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

ایجاد Dialog در listview

Morteza  12 سال پیش  12 سال پیش
+3 0

با سلام و تبریک عید بر همه دوستان

در آخر قسمت 10 آموزش ،هنگامی که استاد از adapter.remove استفاده کردند گفتند میشود که برای این کار یک دیالوگ تعریف کنیم تا قبل از حذف item از کاربر سوال شود.

حال اگر بخواهیم یک alertdialog در کلاس viewHolder که یک nested کلاس در adapterNote هست تعریف کنیم برای پارامتر ورودی ار نوع Context چه چیزی را باید وارد کنیم؟

AlertDialog.Builder builder = new AlertDialog.Builder(context);
0 0
یکی از عللی که من کلاس G تعریف کردم و یک متغیر استاتیک توش گذاشتم به اسم currentActivity همین بوده که همیشه به آخرین activity باز شده دسترسی داشته باشیم و در ویدئو ها اشاره داشتیم که activity یک context هست پس هر جا context بخواد می تونیم از activity فعال استفاده کنیم. (12 سال پیش)
0 0
با تشکر از شما....البته دوستان باید به جایی که از currentActivity استفاده می کنند دقت کنند که حتما مقداردهی شده باشه وگرنه به ارور nullpoiner می رسند (12 سال پیش)
 برای این سوال 4 پاسخ وجود دارد.
پاسخ به سوال 
Borhani  12 سال پیش
+2 0

عرض سلام و خسته نباشید خدمت دوست عزیزم:

این کد تمام آن چیزی است که شما میخواهید موفق و سربلند باشید.

 Delete.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    AlertDialog.Builder alertdialog2 = new AlertDialog.Builder(G.CurrentActivity);
                    alertdialog2.setTitle("Configration Delete");
                    alertdialog2.setMessage("Are you sure you want DELETE this file");

                    alertdialog2.setIcon(R.drawable.delete);
                    alertdialog2.setPositiveButton("YES", new DialogInterface.OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            G.Notes.clear();
                            G.UPdataArrayNotepad();
                            for (int i = 0; i < G.Notes.size(); i++)
                            {
                                int id = G.Notes.get(i).ID;
                                if (id == iditem)
                                {
                                    adapter.remove(item);
                                    G.DeleteTextToNotpad(id);
                                    G.Notes.clear();
                                    G.UPdataArrayNotepad();
                                }
                            }
                        }
                    });
                    alertdialog2.setNegativeButton("NO", new DialogInterface.OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            dialog.cancel();
                        }
                    });
                    AlertDialog alertdialog11 = alertdialog2.create();
                    alertdialog11.show();

                }
            });
پاسخ به سوال 
Morteza  12 سال پیش
0 0

سلامی دوباره خدمت دوستان
جناب mbm124  از راهنمایی تون متشکرم اما شما راه را سخت کردید و برای حذف ایتم مورد نظر نیازی به حلقه و این همه فیلد نیست
راستش توی اینترنت گشتم و توی stackoverflow یک راه حل پیدا کردم ،که کار داد اما خیلی ازش مطمئن نیستم.

کدش را اینجا می زارم لطفا بررسی کنید :

با این که سورس کد را طبق راهنمای سایت گذاشتم اما نمی دونم چرا اینجا مشکل دار نشونش میده!!!

من هم برای همین فایل برنامه را براتون می زارم :

http://up-is.ir/do.php?filename=1395394913181.zip

درضمن توی ActivityMain هم باید به جای :

G.adapter = new AdapterNote(G.notes);

کد زیر را وارد کرد :

G.adapter = new AdapterNote(ActivityMain.this, G.notes);

 

0 0
سلام عزیز ببین این یک کد کاملا اصولی و صحیح طیق آموزش های استاد می باشد ابهامی در سورس داری بگو تا توضیح دهم (12 سال پیش)
0 0
راستش من نفهمیدم شما چرا از فیلد های G.DeleteTextToNotpad G.Notes.clear G.UPdataArrayNotepad استفاده کردید و اصلا چه نیازی به حلقه است ؟ (12 سال پیش)
پاسخ به سوال 
Borhani  12 سال پیش
0 0

این قسمت ها رو ببین فکر می کنم واضح است ابهامی هست توضیح بدهم .

  //tabe update kardan arraye mibashad
    public static void UPdataArrayNotepad()
    {

        Cursor cursor = database.rawQuery("SELECT * FROM Notpad", null);
        while (cursor.moveToNext())
        {
            StructNote node = new StructNote();
            node.ID = cursor.getInt(cursor.getColumnIndex("Notpad_ID"));
            node.title = cursor.getString(cursor.getColumnIndex("Notpad_title"));
            node.body = cursor.getString(cursor.getColumnIndex("Notpad_body"));
            Notes.add(node);
        }
        cursor.close();
    }

  public static void DeleteTextToNotpad(int ID)
    {
        database.execSQL("DELETE FROM Notpad WHERE Notpad_ID='" + ID + "' ");
    }
پاسخ به سوال 
Morteza  12 سال پیش
0 0

با سلام

جناب mbm124 از راهنمایی تون ممنونم اما گویا کد بالا مربوط به قسمت 12 آموزش ها یعنی note server است و من سوالم درمورد قسمت 10 است و  فکر کنم اگر کسی تا قسمت 10 را دیده باشه ،با دیدن کد های شما بیشتر گیج بشه.

البته سورس کد شما کار من را راه انداخت ،چرا که من فکر می کردم که نمی تونم از G.currentActivity در تعریف دیالوگ استفاده کنیم.اما باید به این نکته توجه می کردم که اگر دیالوگ ها را در کلاس ActivityMain تعریف کنم نمی تونم از G.currentActivity استفاده کنم چون G.currentActivity در onResum مقدار دهی می شود و چون onResum بعد از onCreate اجرا می شود پس ممکن است به ارور nullpointer برسیم.

 

البته راه کار خودم هم بد نیست یعنی در تابع سازنده کلاس AdapterNote علاوه بر ArrayList مقدار Context را هم از ورودی بگیریم و در فیلدی بریزیم و در تعریف دیالوگ ازش استفاده کنیم :

private Context mContext; //instance variable

public CustomAdapter(Context context, List<Item> items) {
//some code
this.mC />}

البته چندتا پست بالاتر فایل zip برنامه را گذاشتم.

با تشکر


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