bahram32
سه شنبه 22 دی 1394, 17:02 عصر
سلام دوستان
یک آپلیکیشن هست برای سایت که می خواهیم مطالب سایت را در اپ نمایش بدهیم
همه موارد انجام شده است و دیتا توسط json سمت سرور دریافت می شود و مشکلی نیست و قابل نمایش هم هست
مشکل اینجاست که تعداد رکورد ها خیلی بالاست مثلا چند هزار تا است می خواهیم به این صورت باشد که 100 تا را نمایش بدهد در listview و وقتی اسکرول آمد پایین 100 تای بعدی را نمایش بدهد
از طرف api سرور به صورتی طراحی کردیم که وقتی آخر دارس json برای مثال page=2 بود 100 تای بعدی رو نمایش میده و همینطور ادامه میده
از طرف اندروید که page=1 را اول نمایش میدهیم وقتی اسکرول امد پایین میایم یکی به page اضافه میکنیم و مجدد کدهای فراخانی json را اجرا میکنید اما با این کار کل لیست ویوو از اول لود میشه و 100 تای قبلی حذف میشه و 100 تای بعدی نمایش داده میشه و همچنین اسکرول میره بالا انگار صفحه رفرش شده باشه اما تفاوتش اینه که page2 رو اورده
میخواهم وقتی اسکرول آمد پایین در همون حالت بیاد 100 تای بعدی که در page2 هست رو بیاره و همینطور ادامه بده
کد جسون بنده
pDialog.dismiss();
try {
matlab = json.getJSONArray(json_name);
// build String
json_length = matlab.length();
json_string_1_all = new String [matlab.length()];
json_string_2_all = new String [matlab.length()];
json_string_3_all = new String [matlab.length()];
json_string_4_all = new String [matlab.length()];
for(int i = 0; i < matlab.length(); i++){
JSONObject c = matlab.getJSONObject(i);
// Storing JSON item in a Variable --> with UTF-8 for persian words
json_string_1_all[i] = new String(c.getString(json_node_name_1).getBytes("UTF-8"), "UTF-8");
json_string_2_all[i] = new String(c.getString(json_node_name_2).getBytes("UTF-8"), "UTF-8");
json_string_3_all[i] = new String(c.getString(json_node_name_3).getBytes("UTF-8"), "UTF-8");
json_string_4_all[i] = new String(c.getString(json_node_name_4).getBytes("UTF-8"), "UTF-8");
}
// show data in ListView
listmatlab.setAdapter(new MyAdapter(matlab.this,
R.layout.list_layout,
R.id.vdate,
json_string_1_all));
// lv = getListView();
} catch (JSONException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
و کد اسکرول
public class EndlessScrollListener implements OnScrollListener {
private int visibleThreshold = 5;
private int currentPage = 0;
private int previousTotal = 0;
private boolean loading = true;
public EndlessScrollListener() {
}
public EndlessScrollListener(int visibleThreshold) {
this.visibleThreshold = visibleThreshold;
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
if (loading) {
if (totalItemCount > previousTotal) {
loading = false;
previousTotal = totalItemCount;
currentPage++;
}
}
if (!loading && (totalItemCount - visibleItemCount) <= (firstVisibleItem + visibleThreshold)) {
// I load the next page of gigs using a background task,
// but you can call any function here.
// new LoadGigsTask().execute(currentPage + 1);
Toast.makeText(getApplicationContext(), "end shode", Toast.LENGTH_SHORT).show();
page++;
urlmozaedeh = "http://domain.ir/api/matlab/?page=2";
new JSONParse().execute();
loading = true;
}
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
}
اگر کسی اطلاعی داره کمک کنه ممنون میشم
یک آپلیکیشن هست برای سایت که می خواهیم مطالب سایت را در اپ نمایش بدهیم
همه موارد انجام شده است و دیتا توسط json سمت سرور دریافت می شود و مشکلی نیست و قابل نمایش هم هست
مشکل اینجاست که تعداد رکورد ها خیلی بالاست مثلا چند هزار تا است می خواهیم به این صورت باشد که 100 تا را نمایش بدهد در listview و وقتی اسکرول آمد پایین 100 تای بعدی را نمایش بدهد
از طرف api سرور به صورتی طراحی کردیم که وقتی آخر دارس json برای مثال page=2 بود 100 تای بعدی رو نمایش میده و همینطور ادامه میده
از طرف اندروید که page=1 را اول نمایش میدهیم وقتی اسکرول امد پایین میایم یکی به page اضافه میکنیم و مجدد کدهای فراخانی json را اجرا میکنید اما با این کار کل لیست ویوو از اول لود میشه و 100 تای قبلی حذف میشه و 100 تای بعدی نمایش داده میشه و همچنین اسکرول میره بالا انگار صفحه رفرش شده باشه اما تفاوتش اینه که page2 رو اورده
میخواهم وقتی اسکرول آمد پایین در همون حالت بیاد 100 تای بعدی که در page2 هست رو بیاره و همینطور ادامه بده
کد جسون بنده
pDialog.dismiss();
try {
matlab = json.getJSONArray(json_name);
// build String
json_length = matlab.length();
json_string_1_all = new String [matlab.length()];
json_string_2_all = new String [matlab.length()];
json_string_3_all = new String [matlab.length()];
json_string_4_all = new String [matlab.length()];
for(int i = 0; i < matlab.length(); i++){
JSONObject c = matlab.getJSONObject(i);
// Storing JSON item in a Variable --> with UTF-8 for persian words
json_string_1_all[i] = new String(c.getString(json_node_name_1).getBytes("UTF-8"), "UTF-8");
json_string_2_all[i] = new String(c.getString(json_node_name_2).getBytes("UTF-8"), "UTF-8");
json_string_3_all[i] = new String(c.getString(json_node_name_3).getBytes("UTF-8"), "UTF-8");
json_string_4_all[i] = new String(c.getString(json_node_name_4).getBytes("UTF-8"), "UTF-8");
}
// show data in ListView
listmatlab.setAdapter(new MyAdapter(matlab.this,
R.layout.list_layout,
R.id.vdate,
json_string_1_all));
// lv = getListView();
} catch (JSONException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
و کد اسکرول
public class EndlessScrollListener implements OnScrollListener {
private int visibleThreshold = 5;
private int currentPage = 0;
private int previousTotal = 0;
private boolean loading = true;
public EndlessScrollListener() {
}
public EndlessScrollListener(int visibleThreshold) {
this.visibleThreshold = visibleThreshold;
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
if (loading) {
if (totalItemCount > previousTotal) {
loading = false;
previousTotal = totalItemCount;
currentPage++;
}
}
if (!loading && (totalItemCount - visibleItemCount) <= (firstVisibleItem + visibleThreshold)) {
// I load the next page of gigs using a background task,
// but you can call any function here.
// new LoadGigsTask().execute(currentPage + 1);
Toast.makeText(getApplicationContext(), "end shode", Toast.LENGTH_SHORT).show();
page++;
urlmozaedeh = "http://domain.ir/api/matlab/?page=2";
new JSONParse().execute();
loading = true;
}
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
}
اگر کسی اطلاعی داره کمک کنه ممنون میشم