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

lazy loading list view

pt29  11 سال پیش  11 سال پیش
+2 0

سلام.من آموزش lazyloading رو که جناب اقای محمد حسین گذاشته بودن رو پیاده سازی کردم و مشکلی نداشتم ولی میخوام وقتی کاربر با اسکرول به پایین صفحه میاد یک لودینگ نمایش داده بشه و برنامه به صورت هنگ در نیاد.در ضمن از async task هم که استفاده کردم وقتی که داده های جیسون  اضافه میشد برنامه بسته میشد و استاپ میشد.لطفا راهنمایی بفرمایید.با تشکر 

 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
امیرعلی  11 سال پیش
+3 0

ابتدا پکیج زیر رو دانلود، و  به پروژتون اضافه کنید : http://uplod.ir/y1e1nc50w7a1/com.rar.htm         سپس کد زیر رو هم در اکتیویتی اصلیتون قرار بدید:  

 import java.util.Arrays;
import java.util.LinkedList;
import android.app.ListActivity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import com.costum.android.widget.LoadMoreListView;
import com.costum.android.widget.LoadMoreListView.OnLoadMoreListener;


public class LoadMoreExampleActivity extends ListActivity {

    private LinkedList<String> mListItems;

    private String[]           mNames = { "Fabian", "Carlos", "Alex", "Andrea", "Karla",
                                      "Freddy", "Lazaro", "Hector", "Carolina", "Edwin", "Jhon",
                                      "Edelmira", "Andres" };


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.loadmore);

        mListItems = new LinkedList<String>();
        mListItems.addAll(Arrays.asList(mNames));

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mListItems);

        setListAdapter(adapter);

        // set a listener to be invoked when the list reaches the end
        ((LoadMoreListView) getListView()).setOnLoadMoreListener(new OnLoadMoreListener() {

            public void onLoadMore() {
                // Do the work to load more items at the end of list
                // here
                new LoadDataTask().execute();
            }
        });
    }


    private class LoadDataTask extends AsyncTask<Void, Void, Void> {

        @Override
        protected Void doInBackground(Void... params) {

            if (isCancelled()) {
                return null;
            }

            // Simulates a background task
            try {
                Thread.sleep(1000);
            }
            catch (InterruptedException e) {}

            for (int i = 0; i < mNames.length; i++)
                mListItems.add(mNames[i]);

            return null;
        }


        @Override
        protected void onPostExecute(Void result) {
            mListItems.add("Added after load more");

            // We need notify the adapter that the data have been changed
            ((BaseAdapter) getListAdapter()).notifyDataSetChanged();

            // Call onLoadMoreComplete when the LoadMore task, has finished
            ((LoadMoreListView) getListView()).onLoadMoreComplete();

            super.onPostExecute(result);
        }


        @Override
        protected void onCancelled() {
            // Notify the loading more operation has finished
            ((LoadMoreListView) getListView()).onLoadMoreComplete();
        }
    }
}

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