Ich möchte die Seitenumbruch in meiner App mit Recycelview implementieren, ich habe die addOnScrollListener
verwendet, um zu überprüfen, ob ich zur letzten Zelle wie unten gezeigt.Android RecycleView Scrollt nach oben, wenn es Daten lädt
Die Daten werden ohne irgendein Problem geladen, aber wenn ich zur letzten Zelle scrolle, scrollt der Recycleview automatisch zurück zum Anfang der Liste! und die Toast-Nachricht (Ende der Liste) Popup kontinuierlich halten?
Das ist die Klasse:
public class MainActivity extends AppCompatActivity {
int pageno = 0;
ArrayList<carobject> carslist = new ArrayList<>();
RecyclerView RV;
adapter listadapter;
LinearLayoutManager layoutManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RV = (RecyclerView) findViewById(R.id.mainrv);
layoutManager = new LinearLayoutManager(this);
RV.setLayoutManager(layoutManager);
loaddata(pageno);
RV.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
int visibleItemCount = layoutManager.getChildCount();
int totalItemCount = layoutManager.getItemCount();
int pastVisibleItems = layoutManager.findFirstVisibleItemPosition();
if (pastVisibleItems + visibleItemCount >= totalItemCount) {
Toast.makeText(MainActivity.this, "end of list", Toast.LENGTH_SHORT).show();
pageno +=1;
loaddata(pageno);
RV.getAdapter().notifyDataSetChanged();
}
}
});
}
public void loaddata(final int pagetoloaad){
// load data from API using Volley........
listadapter = new adapter(MainActivity.this,carslist);
RV.setAdapter(listadapter);
}
UPDATE:
ich unten Code entfernt haben sich auf Verfahren es
listadapter = new adapter(MainActivity.this,carslist);
RV.setAdapter(listadapter);
und ersetzen mit
RV.getAdapter().notifyDataSetChanged();
zu erstellen
Die automatische Scroll to top Problem ist gelöst, aber ich bin app Absturz immer beim Scrollen halten
java.lang.NegativeArraySizeException: -652
at com.android.volley.toolbox.DiskBasedCache.streamToBytes(DiskBasedCache.java:323)
at com.android.volley.toolbox.DiskBasedCache.get(DiskBasedCache.java:119)
at com.android.volley.CacheDispatcher.run(CacheDispatcher.java:100)
Irgendwelche Ideen viel
zu helfen
Hoffnung hinzufügen Wo Sie die Methode ‚setAdapter genannt haben () '?? –
In loaddata-Funktion nach Deserialisierung der JSON-Objekte 'listadapter = neuer Adapter (MainActivity.this, carslist); RV.setAdapter (Listenadapter); ' –
ok, bist du fertig mit 'scroll' Problem? "NegativeArraySizeException" ist etwas anderes, wahrscheinlich erhalten Sie dies nach Webservice-Aufruf. dies kann Ihnen helfen: https://stackoverflow.com/questions/26290804/negativearraysizeexception-in-cachedispatcher-java99 –