Everyone,
I am very new to programming and have a few doubts, I am trying to create a java based application in android studio and in one activity I have implemented a recyclerview which has its items loaded through an adapter based on a model which takes 3 parameters (id, name and datetime). All this is working fine but now I want to implement reordering the viewholders on longclick and move, I am able to do this but I am not sure how to implement the "Collections.swap" (saw this online), right now everything is working except that the positions are not being retained on restart. Please check the sample code any help will be appreciated.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_files_history);
RecyclerView recyclerView = findViewById(R.id.historyRecycle);
sharedPref = getSharedPreferences("data", Context.MODE_PRIVATE);
LoadRecycleViewValues();
findViewById(R.id.loadNewFile).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
browseDocuments();
}
});
findViewById(R.id.info).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
buildInfoDialog();
}
});
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(simpleCallback);
itemTouchHelper.attachToRecyclerView(recyclerView);
}
ItemTouchHelper.SimpleCallback simpleCallback = new ItemTouchHelper.SimpleCallback(
ItemTouchHelper.UP | ItemTouchHelper.DOWN | ItemTouchHelper.START | ItemTouchHelper.END, 0) {
@Override
public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolderInitial, @NonNull RecyclerView.ViewHolder viewHolderTarget) {
int fromPosition = viewHolderInitial.getAdapterPosition();
int toPosition = viewHolderTarget.getAdapterPosition();
//What should I put here?
//Collections.swap(HistoryModel, fromPosition, toPosition);
Objects.requireNonNull(recyclerView.getAdapter()).notifyItemMoved(fromPosition,toPosition);
return false;
}
@Override
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
}
};
private void LoadRecycleViewValues() {
HistoryDataBase historyDataBase = new HistoryDataBase(FilesHistory.this);
GetHistoryDB getHistoryDB = new GetHistoryDB(historyDataBase);
RecyclerView recyclerView = findViewById(R.id.historyRecycle);
RecyclerViewAdapter recyclerViewAdapter = new RecyclerViewAdapter(FilesHistory.this, new ArrayList<HistoryModel>());
recyclerView.setAdapter(recyclerViewAdapter);
for (int i = 0; i < getHistoryDB.idList.size(); i++) {
HistoryModel historyModel = new HistoryModel(getHistoryDB.timeValue.get(i), getHistoryDB.FileName.get(i), String.valueOf(getHistoryDB.idList.get(i)));
recyclerViewAdapter.insertData(historyModel);
}
recyclerViewAdapter.setOnClickListener(new RecyclerViewAdapter.OnClickListener() {
@Override
public void onItemClick(View view, HistoryModel obj, int pos) {
try {
historyDataBase.deleteSavedData(obj.getFileId());
} catch (Exception e) {
e.printStackTrace();
}
recyclerViewAdapter.removeData(pos);
}
@Override
public void onItemLongClick(RecyclerViewAdapter.ViewHolder view, HistoryModel obj, int pos) {
}
});
}