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

مشکل در پاک کردن Cache در Listview

Hossein Kurd  11 سال پیش  11 سال پیش
+2 0

سلام دوستان

من از کد زیر برای پاک کرد Cache در ListView استفاده می کنم :

lstChat.destroyDrawingCache();

زمانی که کاربر روی LinearLayout تاچ می کنه یک سری اطلاعات مربوط به اون از Database باید Load بشه که این کار مشکلی نداره اما وقتی تند تند روی Item ها در ListView تاچ می کنه اطلاعات Load شده در ListView قاطی می شن و اطلاعات قبلی با اطلاعات جدید ادغام می شن

این هم متدی که در هنگام تاچ هر Item انجام می شه :

    public static void msgLoader(String loadId) {
        lstChat.destroyDrawingCache();
        listViewPosition = -1;
        lstChat.setVisibility(View.INVISIBLE);
        if (chatAdapter != null) {
            array.clear();
            chatAdapter.clear();
// chatAdapter.notifyDataSetChanged();
        }
        // Save Chats
        if (!array.isEmpty()) {
            ArrayList<Chat> tArray = new ArrayList<Chat>();
            tArray.clear();
            tArray.addAll(array);
            MessagesStack.insertArray(tArray);
        }
        targetId = loadId;
        array.clear();
        array.addAll(MessagesStack.selectById(loadId , 0, true));
        if(!array.isEmpty()){
            for (int i=0; i<array.size();i++){
                Log.i("abcdabcd" , "index : " + i + " , " + array.get(i).getSender_name());
                if(!array.get(i).getSender_id().equals(loadId) || !array.get(i).getReceiver_id().equals(loadId)){
                    array.remove(i);
                }
            }
            lstChat.destroyDrawingCache();
            firstMsgId = array.get(0).getMsgId();
            lastMsgId = array.get(array.size() - 1).getMsgId();
            chatAdapter.notifyDataSetChanged();
        }
        lstChat.setSelection(array.size() - 1);
        setFriendsAdapter();
        lstChat.setVisibility(View.VISIBLE);

    }
0 0
فکر کنم بترین راه این باشه که شما در تمام جاهایی که اطلاعات جدید رو میخاید دریافت کنید و یا notifyDataSetChanged کنید cache رو پاک کنید ! (11 سال پیش)
0 0
من نمیدونم چه نیازی به Catch کردن و یا حتی پاک کردن Catch دارید! مثلا وایبر میاید دیتا رو از وب میگیره و همون لحظه توی دیتابیس خودش ذخیره میکنه، اون لحظه ای که دیتا رو در دیتابیس ذخیره میکنه یک آیتم هم به ArrayList ی که مسیج های جاری رو داره نشون میده اضافه میکنه.حالا میتونه Adapter.NotifyDatasetChange کنه و یا به طریقه دیگه ای لیست رو نمایش بده.ولی اینکه مقدار Catch مشکلی به وجود میاره نباید ربطی به طریقه ذخیره دیتا یا کلیک روی اونها باشه. (11 سال پیش)
0 0
از notifyDataSetChanged استفاده کردم ، اما اطلاعات قاطی می شن! وقتی تند تند تاچ می شه قاطی می شن (11 سال پیش)
 برای این سوال پاسخی وجود ندارد.

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