ایجاد Dialog در listview
با سلام و تبریک عید بر همه دوستان
در آخر قسمت 10 آموزش ،هنگامی که استاد از adapter.remove استفاده کردند گفتند میشود که برای این کار یک دیالوگ تعریف کنیم تا قبل از حذف item از کاربر سوال شود.
حال اگر بخواهیم یک alertdialog در کلاس viewHolder که یک nested کلاس در adapterNote هست تعریف کنیم برای پارامتر ورودی ار نوع Context چه چیزی را باید وارد کنیم؟
AlertDialog.Builder builder = new AlertDialog.Builder(context);
عرض سلام و خسته نباشید خدمت دوست عزیزم:
این کد تمام آن چیزی است که شما میخواهید موفق و سربلند باشید.
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();
}
});
سلامی دوباره خدمت دوستان
جناب 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);
این قسمت ها رو ببین فکر می کنم واضح است ابهامی هست توضیح بدهم .
//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 + "' ");
}
با سلام
جناب 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 برنامه را گذاشتم.
با تشکر
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .