Ich habe RecyclerView und einige Ansichten drin. Sie werden jede Sekunde aktualisiert. Das Problem ist, dass der Bildschirm jede Sekunde nach oben scrollt (auffrischt), während der Benutzer nach unten scrollt. Wie kann ich die Position nach dem Datenupdate halten? Dies ist mein Code:Wie kann der Bildschirm beim Aktualisieren der Daten im RecyclerViewAdapter angehalten werden?
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = (RecyclerView)findViewById(R.id.mainRecyclerView);
layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
initializeData();
adapter = new RecyclerViewAdapter(offers);
startCount();
}
private void startCount(){
final Handler handler = new Handler();
Runnable runnable = new Runnable() {
@Override
public void run() {
updateData();
handler.postDelayed(this, 1000);
}
};
handler.postDelayed(runnable, 1000);
}
private void initializeData(){
offers = new ArrayList<>();
seconds = new ArrayList<>();
seconds.add(600);
seconds.add(10);
seconds.add(20);
offers.add(new Offer(seconds.get(0), R.drawable.zdj, 200));
offers.add(new Offer(seconds.get(1), R.drawable.zdj));
offers.add(new Offer(seconds.get(2), R.drawable.zdj));
}
private void updateData(){
int i = 0;
int tempSec;
for(int j = 0; j < seconds.size();j++){
tempSec = seconds.get(j);
if(tempSec==0){
offers.remove(j);
seconds.remove(j);
break;
}
tempSec--;
seconds.set(j, tempSec);
offers.set(j, new Offer(seconds.get(j), R.drawable.zdj));
}
initializeAdapter();
}
private void initializeAdapter() {
adapter.notifyItemChanged(offers.size());
recyclerView.setAdapter(adapter);
}
Warum möchten Sie den Bildlauf stoppen, wenn Sie mit Threads spielen können? Verwenden Sie einen parallelen Thread mit dem Hauptthread zum Laden von Daten in der Recycleransicht. –