بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
ساخت لیست بی پایان
سلام
یه سوال داشتم زمانی که لیست بی پایان با مثلا ریسایکرویو میسازیم . چرا داده ها رو به صورت محدود از سرور میگیریم؟
چرا نمیگیم که همه داده ها رو بگیره؟
با تشکر
0
0
بستگی به کوئری ای که سمت سرور مینویسید داره که کل مقادیر رو از دیتابیس واکشی کنه یا نه یکسری داده محدود رو شما میتونید همه داده رو هم بگیرید و به صورت جیسون به اپ پاس بدین (9 سال پیش)
0
0
تعدادش فرض کیند زیاده مثل 10 هزار تا همون جور هم اضافه میشه .
منظور م اینه که چرا این کار رو میکنند برای سرعت اپ ؟
(9 سال پیش)
0
0
به خاط اینکه پیمایش این حجم داده از دید کاربر خسته کننده و همچنینی غیر منطقی هست پس این روش رو پیاده یمکنن که اگر خود کار بر نیاز داشت بقیه ایتم ها رو هم بررسی کنه و این باعث میشه تجربه کاربری اپ یا به اصطلاح ux اپ خوب باشه (9 سال پیش)
0
0
حالا که این کار رو انجام میدی یعنی محدودیت میزاری . یه مشکلی که من دارم اینه که بعضی مواقع که تند ریسایکرویو اسکرول میکنم . عمل گرفتن اطلاعات متوقف میشه
برای چیه؟ (9 سال پیش)
0
0
فک کنم به خاطر شرطی هست که گذاشتین برای جواب به این سوالتون باید کدتون رو بذارید (9 سال پیش)
برای این سوال 4 پاسخ وجود دارد.
پاسخ به سوال
125847
9 سال پیش
0
0
قسمتی که ریسایکرویو صدا زده میشه
agahi_recycler.setOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
}
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
int totalItemCount = mLayoutManager.getItemCount();
int lastVisibleItem = mLayoutManager.findLastVisibleItemPosition();
if (totalItemCount > 1) {
if (lastVisibleItem >= totalItemCount - 1) {
// End has been reached
// do something
if (limit < total ) {
if (nDialog == null) {
swip = false;
if(scroll==0) {
if(net==0) {
//new NetCheck4().execute();
if (limit < total ) {
if (scroll == 0) {
scroll = 1;
limit+=12;
mTask = new home_agahi3_server(getActivity().getApplicationContext(), getActivity(),
limit + "", adapter
);
mTask.executeOnExecutor(mTask.THREAD_POOL_EXECUTOR, "");
} else {
// Toast.makeText(getActivity(), scroll + "", Toast.LENGTH_SHORT).show();
Log.e("SCroll", scroll + "");
}
}else{
}
}
}
}
}
}
}
}
});
پاسخ به سوال
125847
9 سال پیش
0
0
متغیر scroll و net رو گذاشتم زمانیکه صفر نبود دیگه کد سمت سرور رو نخونه و زمانیکه متد postexecute اجرا شد متغییرها دوباره صفر میشن
کد سمت سروور هم زیر
public class home_agahi3_server extends AsyncTask<String,Void,String> {
private Context c;
private Activity ac;
private String state_id;
private String lim;
private RecyclerView rec;
AgahiRecyclerAdapter adp;
public home_agahi3_server(Context c,Activity ac,String lim,AgahiRecyclerAdapter adp
){
this.c=c;
this.ac=ac;
this.lim=lim;
this.adp=adp;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
//swipeContainer.setRefreshing(false);
// agahi_recycler.setVisibility(View.INVISIBLE);
// rotat2.start();
// agahi_recycler.setOnScrollListener(null);
lay2.setVisibility(View.VISIBLE);
net=1;
lay2.setBackgroundResource(R.drawable.border_bg3);
}
@Override
protected String doInBackground(String... strings) {
try{
String data= URLEncoder.encode("get_post", "UTF-8")+"="+URLEncoder.encode("true","UTF-8");
// data+="&"+ URLEncoder.encode("state_id", "UTF-8")+"="+URLEncoder.encode(state_id,"UTF-8");
data+="&"+ URLEncoder.encode("lim", "UTF-8")+"="+URLEncoder.encode(lim,"UTF-8");
//
URL url=new URL(MainActivity.url+"post.php");
URLConnection connect=url.openConnection();
HttpURLConnection urlc = (HttpURLConnection) url.openConnection();
urlc.setConnectTimeout(3000);
urlc.connect();
errorMessage = urlc.getResponseCode() == 200 ? "Successful Connection" : "Internet Error";
if(urlc.getResponseCode() == 200) {
connect.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(connect.getOutputStream());
wr.write(data);
wr.flush();
//
InputStreamReader in = new InputStreamReader(connect.getInputStream());
BufferedReader reader = new BufferedReader(in);
String line = "";
StringBuilder sb = new StringBuilder();
while ((line = reader.readLine()) != null) {
sb.append(line);
}
return sb.toString();
}
} catch (SocketTimeoutException e) {
errorMessage = "Connection Error1";
return "err1";
} catch (MalformedURLException e) {
errorMessage = "Connection Error2";
return "err1";
} catch (IOException e) {
Log.e("dddgg2", "dddgg2");
errorMessage = "Connection Error3";
return "err1";
}
return "";
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
lay2.setVisibility(View.GONE);
lay2.setBackgroundResource(R.drawable.bg_cadr_around);
if(s.equals("err1")){
Toast.makeText(c,"err",Toast.LENGTH_SHORT).show();
lay2.setVisibility(View.GONE);
lay2.setBackgroundResource(R.drawable.bg_cadr_around);
net=0;
scroll=0;
}else {
// rotat2.stop();
lay2.setVisibility(View.GONE);
lay2.setBackgroundResource(R.drawable.bg_cadr_around);
// nDialog.dismiss();
nDialog = null;
// agahi_recycler.setVisibility(View.VISIBLE);
JSONArray arr = null;
JSONObject ob = null;
//Toast.makeText(c,scroll+"",Toast.LENGTH_SHORT).show();
scroll = 0;
try {
arr = new JSONArray(s);
for (int i = 0; i < arr.length(); i++) {
ob = arr.getJSONObject(i);
_name.add(ob.getString("title"));
_id.add(ob.getString("id"));
_body.add(ob.getString("content"));
_img.add(ob.getString("img"));
_imgs.add(ob.getString("imgs"));
_price.add(ob.getString("price"));
_color.add(ob.getString("color"));
_size.add(ob.getString("size"));
_shenas.add(ob.getString("shenas"));
_time.add(ob.getString("time"));
_expire.add(ob.getString("expire"));
_visit_today.add(ob.getString("todayvisit"));
_visit_total.add(ob.getString("totalvisit"));
_mobile.add(ob.getString("mobile"));
_cat.add(ob.getString("cat"));
_user_id.add(ob.getString("user"));
_menu_order.add(ob.getString("order"));
_link.add(ob.getString("link"));
}
adp.notifyDataSetChanged();
net = 0;
} catch (Exception e) {
//Toast.makeText(c,"errors in json",Toast.LENGTH_SHORT).show();
}
}
}
}
پاسخ به سوال
125847
9 سال پیش
0
0
Runnable رو بهش دادم با کدهای زیر بهتر شد. ولی هنوز بازهم مشکلش هست البته کمتر شده و البته systemClock.sleep هم بهش دادم
if (scroll == 0) {
scroll = 1;
Log.e("EEE","eee");
lay2.setVisibility(View.VISIBLE);
Runnable runnable = new Runnable() {
@Override
public void run() {
SystemClock.sleep(1000);
limit+=12;
mTask = new home_agahi3_server(getActivity().getApplicationContext(), getActivity(),
limit + "", adapter
);
mTask.executeOnExecutor(mTask.THREAD_POOL_EXECUTOR, "");
// lay2.setBackgroundResource(R.drawable.border_bg3);
}
};
new Thread(runnable).start();
پاسخ به سوال
125847
9 سال پیش
0
0
الان که کار کردم روش فهمیدم به خاطر تصویر هست که داخل لیست هست. تصویر از سرور میگیره و از پیکاسو استفاده شده است به خاطر همین بعضی موقع قاطی میکنه. برای حل مشکل چی باید کرد؟
Picasso.with(ac).load(url +this.img_agahi.get(position) ).fit().placeholder(R.drawable.nopic).into(
viewHolder.imgs_agahis);
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .