mirror of
https://github.com/ArcaneChat/android.git
synced 2026-07-03 14:05:24 +02:00
move assets, res and java source code to src/main
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
package org.thoughtcrime.securesms;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Parcelable;
|
||||
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import org.thoughtcrime.securesms.util.ViewUtil;
|
||||
|
||||
/**
|
||||
* Like LinearLayoutManager but you can set a starting position
|
||||
*/
|
||||
class SetStartingPositionLinearLayoutManager extends LinearLayoutManager {
|
||||
|
||||
private int pendingStartingPos = -1;
|
||||
|
||||
SetStartingPositionLinearLayoutManager(Context context, int vertical, boolean b) {
|
||||
super(context, vertical, b);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLayoutChildren(RecyclerView.Recycler recycler, RecyclerView.State state) {
|
||||
if (pendingStartingPos != -1 && state.getItemCount() > 0) {
|
||||
// scrollToPositionWithOffset(mPendingTargetPos, 0) would also do the job but the target item
|
||||
// would be at the bottom of the screen, not at the top
|
||||
int position = pendingStartingPos + 1;
|
||||
if (position < state.getItemCount()) {
|
||||
scrollToPositionWithOffset(pendingStartingPos + 1, getHeight() - ViewUtil.dpToPx(10));
|
||||
} else {
|
||||
// pendingTargetPos is the top-most item
|
||||
scrollToPosition(pendingStartingPos);
|
||||
}
|
||||
pendingStartingPos = -1;
|
||||
}
|
||||
|
||||
super.onLayoutChildren(recycler, state);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRestoreInstanceState(Parcelable state) {
|
||||
pendingStartingPos = -1;
|
||||
super.onRestoreInstanceState(state);
|
||||
}
|
||||
|
||||
public void setStartingPosition(int position) {
|
||||
pendingStartingPos = position;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user