برروزرسانی Listview بعد از Update کردن یک خبر
سلام دوستان من برنامه سمت سروری نوشتم که اخبار رو توی لیست ویوو نشون میده . وقتی روی خبر تاچ میکنم و میرمو خبر رو تغییر میدم بعد دکمه آپدیت رو میزنم و آپدیت هم به درستی انجام میشه و صفحه تغییرات که بسته میشه بر میگرده به اکتیویتی که خبر رو نشون میده خبر اصن تغییری تو لیست ویوو نکرده . حتما باید اکتیویتی خبر هارو عوض کنی یا ببندی بعد دوباره برگردی تا خبر تو لیست ویو هم اپدیت باشه . بنظرتون مشکل چیه . تکه کدی داره ؟
دوست عزیز از 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();
سلام
کد Mir Unknown درسته ولی واسه این کاری که شما میخواید انجام بدید راه مناسبی نیست، چون این کد داره هر 3 ثانیه یک بار adapter شما رو آپدیت میکنه و این بیشتر برای زمانی مناسب هست که مثلا سایت شما مدام در حال آپدیت شدن هست و قصد دارید که کاربر هم خیلی زود از این آپدیت ها با خبر بشه. که به نظر آپدیت کردن اتوماتیک لیست خبر ها بدون درخواست کاربر همیشه خوشایند نیست و بهتره که مثلا یه دکمه بذارید که با زدن این دکمه لیست خبر ها آپدیت بشه.
راه حل:
برای این که وقتی دوباره به لیست خبر ها میاید بتونید خبرهای آپدیت شده رو ببینید باید توی متد onResume اون اکتیویتی که لیست خبرها رو نشون میده یه notifyDataSetChanged بذارید. با این کار وقتی آپدیت رو میزنید و دوباره وارد لیست خبر ها میشید، این لیست به روز رسانی میشه و نمایش داده میشه.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .