بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
lazy loading list view
سلام.من آموزش 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();
}
}
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .