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

برروزرسانی Listview بعد از Update کردن یک خبر

XXXXXXX  12 سال پیش  12 سال پیش
0 0

سلام دوستان من برنامه سمت سروری نوشتم که اخبار رو توی لیست ویوو نشون میده . وقتی روی خبر تاچ میکنم و میرمو خبر رو تغییر میدم بعد دکمه آپدیت رو میزنم و آپدیت هم به درستی انجام میشه و صفحه تغییرات که بسته میشه بر میگرده به اکتیویتی که خبر رو  نشون میده خبر اصن تغییری تو لیست ویوو نکرده . حتما باید اکتیویتی خبر هارو عوض کنی یا ببندی بعد دوباره برگردی تا خبر تو لیست ویو هم اپدیت باشه . بنظرتون مشکل چیه . تکه کدی داره ؟

 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
Mir Unknown  12 سال پیش
0 0

دوست عزیز از Thread و  handlerباید استفاده کنی Threadهر چند ثانیه باید اجرا بشه و اطلاعات رو از هاست بخونه و handler باید UI باید لود کنه

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

هر جاشو نگرفتی بگو

  Thread thread = new Thread(new Runnable() {

@Override
public void run() {
while (true) {
try {
Thread.sleep(3000);
Commands.readchat();
adapter = new AdapterNote(G.chats);
adapter.notifyDataSetChanged();

Thread thread2 = new Thread(new Runnable() {

@Override
public void run() {

handler.post(new Runnable() {

@Override
public void run() {

adapter.notifyDataSetChanged();
ltvChat.setAdapter(adapter);
}
});
}
});

thread2.start();



catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});

thread.start();
پاسخ به سوال 
CreativeBoy  12 سال پیش
+2 0

سلام 

کد Mir Unknown درسته ولی واسه این کاری که شما میخواید انجام بدید راه مناسبی نیست، چون این کد داره هر 3 ثانیه یک بار adapter شما رو آپدیت میکنه و این بیشتر برای زمانی مناسب هست که مثلا سایت شما مدام در حال آپدیت شدن هست و قصد دارید که کاربر هم خیلی زود از این آپدیت ها با خبر بشه. که به نظر آپدیت کردن اتوماتیک لیست خبر ها بدون درخواست کاربر همیشه خوشایند نیست و بهتره که مثلا یه دکمه بذارید که با زدن این دکمه لیست خبر ها آپدیت بشه.

راه حل:

برای این که وقتی دوباره به لیست خبر ها میاید بتونید خبرهای آپدیت شده رو ببینید باید توی متد onResume اون اکتیویتی که لیست خبرها رو نشون میده یه notifyDataSetChanged بذارید. با این کار وقتی آپدیت رو میزنید و دوباره وارد لیست خبر ها میشید، این لیست به روز رسانی میشه و نمایش داده میشه.

+1 0
برای این موارد از راهکارهای RealTime مثل SignalR استفاده میشه : لینک - کلاینت اندروید هم براش موجوده (12 سال پیش)
0 0
کلاس من adapter رو نمیشناسه توی onresume (12 سال پیش)
0 0
برای حل مشکل میتونید Adapter رو به صورت field تعریف کنید، اینجوری مشکلتون حل میشه. (12 سال پیش)
0 0
میشه بیشتر توضیح بدین این کد منه و اداپتر هم داخل همین اکتیویتی تعریف شده لینک (12 سال پیش)
0 0
شما adapter رو توی کلاس loadNews تعریف کردید، برای این که بتونید توی onResume هم به Adapter دسترسی داشته باشید، ListAdapter adapter رو قبل از متد onCreate بذارید و بعدا هر جا توی اکتیویتی خواستید میتونید مقداردهی کنید یا ازش استفاده کنید. (12 سال پیش)
0 0
الان همین کارو کردم اما شاداپتر متد notifyDataSetChanged نداره . CreativeBoy یاهو نیستی؟ (12 سال پیش)

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