ممنون بابت کد ولی من کدشو دارم و اجرا کردم , و وقتی اسکرول میرسه اونجا دیتا ها اضافه میشه ( به آرایه ) اما نمایش داده نمیشه
بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ
رفرش نشدن دیتا پس از NotifyDataSetChanged
مدیریت گفتگو
آخرین تغییر: 10 سال پیش
سلام دوستان
من وقتی یک سری اطلاعات جدید از سرور میگیرم به صورت JSON و بعد NotifyDataSetChanged میکنم , دیتای داخل گرید ویو رفرش نمیشه تا کلی اسکرول کنم به بالا و برگردم به پایین
از BaseAdapter و UIL استفاده میکنم برای لود عکس و ایجاد دیتا در گرید ویو
این هم بخشی از کد
public void onResponse(String data) {
isAdding = false;
try {
if (imagesCount == 0) {
Constants.latestItems= new String[0];
}
JSONArray apps = new JSONArray(data);
for (int i = 0; i < apps.length(); i++) {
JSONObject object = apps.getJSONObject(i);
StructWallpaper application = new StructWallpaper();
application.id = object.getString("id");
application.url = object.getString("link");
Constants.latestItems= addElement(Constants. latestItems,
application.url);
}
adapterLength = Constants.latestItems.length;
imageUrls = Constants.latestItems;
if (imagesCount == 0) {
imageAdapter = new ImageAdapter();
listView.setAdapter(new ImageAdapter());
listView.setOnScrollListener(listener);
} else if (imagesCount != 0) {
imageAdapter.notifyDataSetChanged();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
BaseAdapter :
public class ImageAdapter extends BaseAdapter {
private LayoutInflater inflater;
ImageAdapter() {
inflater = LayoutInflater.from(getActivity());
}
@Override
public int getCount() {
return imageUrls.length;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final ViewHolder holder;
View view = convertView;
if (view == null) {
view = inflater
.inflate(R.layout.item_grid_image, parent, false);
holder = new ViewHolder();
assert view != null;
holder.imageView = (ImageView) view.findViewById(R.id.imageGrid);
holder.progressBar = (ProgressBar) view
.findViewById(R.id.progress);
view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}
ImageLoader.getInstance().displayImage(imageUrls[position],
holder.imageView, options,
new SimpleImageLoadingListener() {
@Override
public void onLoadingStarted(String imageUri, View view) {
holder.progressBar.setProgress(0);
holder.progressBar.setVisibility(View.VISIBLE);
}
@Override
public void onLoadingFailed(String imageUri, View view,
FailReason failReason) {
holder.progressBar.setVisibility(View.GONE);
}
@Override
public void onLoadingComplete(String imageUri,
View view, Bitmap loadedImage) {
holder.progressBar.setVisibility(View.GONE);
}
}, new ImageLoadingProgressListener() {
@Override
public void onProgressUpdate(String imageUri,
View view, int current, int total) {
holder.progressBar.setProgress(Math.round(100.0f
* current / total));
}
});
return view;
}
}
پاسخها 1
کد مربوط به lazy loading ::
grdloading.setOnScrollListener(new OnScrollListener() {
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
int lastItem = firstVisibleItem + visibleItemCount;
if (adapter.getCount() >= 10 && lastItem > adapter.getCount() - 3) {
boolean isLoading = false;
if ( !isLoading) {
params.add(new BasicNameValuePair("part", "" + lastItem));
new Thread(new Runnable() {
@Override
public void run() {
try {
result = Webservice.readUrl("لینک مربوطه", params);
}
catch (Exception e) {}
if (result != null) {
G.HANDLER.post(new Runnable() {
@Override
public void run() {
try {
G.tasks.clear();
JSONArray tasks = new JSONArray(result);
for (int i = 0; i < tasks.length(); i++) {
JSONObject object = tasks.getJSONObject(i);
StructTask task = new StructTask();
<ابجکت ها نوشته میشن>
G.tasks.add(task);
}
}
catch (JSONException e) {
e.printStackTrace();
}
adapter.notifyDataSetChanged();
}
});
}
}
}).start();
isLoading = true;
}
}
}
public void onScrollStateChanged(AbsListView view, int scrollState) {}
});
سمت سرور رو هم که میدونید دیگ خودتون!
نظرات
کد همون قسمت رو بزارید .از سرور اوکی هستش همه چی؟
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .
ویرایش
پیام
نظرات