gpt4 book ai didi

java - 无限滚动问题,向下滚动且 api 调用函数有效且列表位置转到第一项

转载 作者:行者123 更新时间:2023-12-02 00:12:22 26 4
gpt4 key购买 nike

private StringRequest VolleyPostlogin(final int requestCount){

System.out.println("MeeeHistoryServerResponseeNrequestCount "+requestCount);




mSwipeRefreshLayout.setRefreshing(true);
RequestQueue requestQueue = Volley.newRequestQueue(getActivity());
String URL = Constants.APP_URL+"get_history_new";

final String mRequestBody = "{\"jsonrpc\": \"2.0\",\"params\":{\"page\":"+requestCount+"}}";
System.out.println("HisResponseeNmRequestBody "+mRequestBody);
// final String mRequestBody = "{\"jsonrpc\": \"2.0\",\"params\":{}}";

StringRequest stringRequest = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.i("VOLLEY", response);

System.out.println("HisResponseeNmRequestBody response "+response);

try{

JSONObject mainObject = new JSONObject(response);
JSONObject result = mainObject.getJSONObject("result");
String status = result.getString("status");
if(status.equals("200")){
JSONArray Arrresponse = result.getJSONArray("response");

if(Arrresponse.length()>0) {
for (int i = 0; i < Arrresponse.length(); i++) {
try{
JSONObject codeObject = Arrresponse.getJSONObject(i);
System.out.println("Arrresponse "+codeObject);

name.add(codeObject.getString("name"));


try{
SimpleDateFormat df = new SimpleDateFormat("dd MMM yyyy hh:mm a", Locale.ENGLISH);
df.setTimeZone(TimeZone.getTimeZone("UTC"));
Date date = df.parse(codeObject.getString("actual_start_date"));
df.setTimeZone(TimeZone.getDefault());
actual_start_date.add(df.format(date));

}catch (Exception e){
System.out.println("ArrresponseException "+e.toString());
actual_start_date.add("");
}


try{
SimpleDateFormat df = new SimpleDateFormat("dd MMM yyyy hh:mm a", Locale.ENGLISH);
df.setTimeZone(TimeZone.getTimeZone("UTC"));
Date date = df.parse(codeObject.getString("actual_stop_date"));
df.setTimeZone(TimeZone.getDefault());
actual_stop_date.add(df.format(date));

}catch (Exception e){
actual_stop_date.add("");
System.out.println("ArrresponseException "+e.toString());
}


actual_duration.add(codeObject.getString("actual_duration"));

try{
SimpleDateFormat df = new SimpleDateFormat("dd MMM yyyy hh:mm a", Locale.ENGLISH);
df.setTimeZone(TimeZone.getTimeZone("UTC"));
Date date = df.parse(codeObject.getString("planned_start_date"));
df.setTimeZone(TimeZone.getDefault());
planned_start_date.add(df.format(date));

}catch (Exception e){
planned_start_date.add("");
System.out.println("ArrresponseException "+e.toString());
}

try{
SimpleDateFormat df = new SimpleDateFormat("dd MMM yyyy hh:mm a", Locale.ENGLISH);
df.setTimeZone(TimeZone.getTimeZone("UTC"));
Date date = df.parse(codeObject.getString("planned_stop_date"));
df.setTimeZone(TimeZone.getDefault());
planned_stop_date.add(df.format(date));

}catch (Exception e){
planned_stop_date.add("");
System.out.println("ArrresponseException "+e.toString());
}

meeting_status.add(codeObject.getString("status"));
latitude.add(codeObject.getString("planned_latitude"));
longitude.add(codeObject.getString("planned_longitude"));
meeting_id.add(codeObject.getString("id"));
external_attentendees.add(codeObject.getString("partner_name"));
internal_attentendees.add(codeObject.getString("attendees"));
planned_duration.add(codeObject.getString("planned_duration"));
show_as.add(codeObject.getString("show_as"));
location.add(codeObject.getString("location"));
Status.add(codeObject.getString("status"));
tags.add(codeObject.getString("tags"));
reminders.add(codeObject.getString("reminders"));
description.add(codeObject.getString("description"));
summary.add(codeObject.getString("summary"));
mRecyclerView.setVisibility(View.VISIBLE);

historyAdapter = new HistoryAdapter(name,actual_start_date,actual_stop_date,planned_start_date,planned_stop_date,latitude,longitude,meeting_status,meeting_id,external_attentendees,internal_attentendees,planned_duration,show_as,tags,reminders,description,actual_duration,Status,summary,location,mSwipeRefreshLayout,activity);
mRecyclerView.setAdapter(historyAdapter);
// progressBar.setVisibility(View.GONE);
mSwipeRefreshLayout.setRefreshing(false);
historyAdapter.notifyDataSetChanged();
NoData.setVisibility(View.GONE);


manager = new LinearLayoutManager(activity);
mRecyclerView.setLayoutManager(manager);

mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
if(newState == AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL)
{
isScrolling = true;
Toast.makeText(getActivity(),"onScrollStateChanged " , Toast.LENGTH_LONG).show();

}
}

@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
currentItems = manager.getChildCount();
totalItems = manager.getItemCount();
scrollOutItems = manager.findFirstVisibleItemPosition();
System.out.println("NEWonScrolledmanager currentItems "+currentItems);
System.out.println("NEWonScrolledmanager totalItems "+totalItems);
System.out.println("NEWonScrolledmanager scrollOutItems "+scrollOutItems);


if(isScrolling && (currentItems + scrollOutItems == totalItems))
{
Toast.makeText(getActivity(),"onScrolled " , Toast.LENGTH_LONG).show();
isScrolling = false;
getData();
}


}
});

}catch (Exception e){

Toast.makeText(getActivity(),"Something went wrong, please try again later" , Toast.LENGTH_LONG).show();
System.out.println("ServerResponseExceptionCatch "+e.toString());

}
}

}else {
mSwipeRefreshLayout.setRefreshing(false);
}


}else {
NoData.setVisibility(View.VISIBLE);
mSwipeRefreshLayout.setRefreshing(false);
}

}catch (Exception e){

Toast.makeText(getActivity(),"Something went wrong, please try again later" , Toast.LENGTH_LONG).show();
System.out.println("ServerResponseExceptionCatch "+e.toString());
// progressBar.setVisibility(View.GONE);
}

}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
try{
Log.e("VOLLEY", error.getLocalizedMessage());
mSwipeRefreshLayout.setRefreshing(false);
System.out.println("ServerResponse error"+error);
Toast.makeText(getActivity(),"Something went wrong, please try again later" , Toast.LENGTH_LONG).show();
// progressBar.setVisibility(View.GONE);
}catch (Exception e){
System.out.println("ServerResponseException "+e.toString());
Toast.makeText(getActivity(),"Something went wrong, please try again later" , Toast.LENGTH_LONG).show();
System.out.println("ServerResponseExceptionCatch "+e.toString());
// progressBar.setVisibility(View.GONE);
}


}
}) {
@Override
public String getBodyContentType() {
return "application/json; charset=utf-8";
}
@Override
public byte[] getBody() throws AuthFailureError {
try {
return mRequestBody == null ? null : mRequestBody.getBytes("utf-8");
} catch (UnsupportedEncodingException uee) {
VolleyLog.wtf("Unsupported Encoding while trying to get the bytes of %s using %s",
mRequestBody, "utf-8");
return null;
}

}

@Override
public Map<String, String> getHeaders() throws AuthFailureError {
System.out.println("ConstantsSessionId "+Constants.SessionId);
Map<String, String> params = new HashMap<String, String>();
params.put("Content-Type", "application/json");
params.put("X-Openerp-Session-Id", Constants.SessionId);
return params;
}

};

requestQueue.add(stringRequest);
return stringRequest;
}

当我向下滚动 api 调用时,我在项目中使用 android volley 进行无限滚动,并且它不会恢复到我上次看到的列表位置,它会转到列表顶部。这是我无限滚动的完整代码,我的问题是当我尝试向下滚动并调用 API 时,列表将直接转到顶部,而不是停留在 API 调用发生的最后位置,我尝试了很多方法来解决这个问题但它不起作用。请有人帮我解决这个问题。

提前致谢。

最佳答案

您想要实现的目标称为“分页”。

你的做法是错误的。

关注this tutorial

你会完成它的。

并且不要在 Activity 或 fragment 中实现网络调用或适配器。为此创建新的类。它将使您的代码更具可读性且易于跟踪。检查 Android 中的 MVP 模式。

关于java - 无限滚动问题,向下滚动且 api 调用函数有效且列表位置转到第一项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58112933/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com