آموزش برنامه نویسی اندروید (Android)
۴۱۹ آموزش
نمایش دسته بندی ها (۴۱۹ آموزش)

عدم استفاده از روش ArrayAdapter.addAll() (روش addAll برای متغیر از نوع ArrayAdapter) در نسخه های API پایین تر از 11 و جایگزینی روش ArrayAdapter.add() (روش add برای متغیر از نوع ArrayAdapter) به جای آن، برای جلوگیری از ایجاد Force Close ، در برنامه نویسی اندروید

چنانچه در نسخه های API پایین تر از 11 ، از روش ArrayAdapter.addAll() (روش addAll برای متغیر از نوع ArrayAdapter) استفاده کنیم، با Force Close روبرو خواهیم شد، بنابراین چنانچه قصد داریم که از این روش برای نسخه های API پایین تر از 11 هم استفاده کنیم، برای رفع این مشکل، باید از روش ArrayAdapter.add() (روش add برای متغیر از نوع ArrayAdapter) استفاده کنیم که البته باید در یک حلقه for به کار رود تا همان عملکرد را داشته باشد.

برای درک بهتر این موضوع، فرض کنید که کدهای زیر را نوشته ایم (بخشی از کدهای یک برنامه اندروید دلخواه) :


public void addNewData(List<String> data) {
               
        this.removeFooterView(footer);
       
        adapter.addAll(data);
        adapter.notifyDataSetChanged();
        isLoading = false;
}

در کد بالا، روش addAll را به کار برده ایم که در نسخه های API پایین تر از 11 ، باعث ایجاد Forec Close می شود (متغیر adapter از جنس ArrayAdapter می باشد). اکنون کد بالا را با روش add و همچنین یک حلقه for ، بازنویسی می کنیم :


public void addNewData(List<String> data) {
               
        this.removeFooterView(footer);
       
        int data_size = data.size();
        for(int x = 0; x < data_size; x = x+1) {
                String data_element = data.get(x);
                adapter.add(data_element);
        }
        adapter.notifyDataSetChanged();
        isLoading = false;
}

کد بالا، در نسخه های API پایین تر از 11 نیز بدون هیچگونه مشکلی اجرا می شود و همان عملکرد را مورد نظرمان را دارد.

نویسنده علیرضا گلمکانی
شماره کلید 2897
گزینه ها
به اشتراک گذاری (Share) در شبکه های اجتماعی
نظرات 0 0 0

ارسال نظر جدید (بدون نیاز به عضو بودن در وب سایت)