mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2024-12-25 02:18:23 +01:00
Use notifyItemRangeInserted when appropriate in order to avoid reloading the whole dataset. Change bur transformation parameter for NSFW preview.
This commit is contained in:
parent
cdcb38db51
commit
33db4809e4
@ -41,10 +41,10 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
|||||||
static final String SUBREDDIT_NAME_KEY = "SNK";
|
static final String SUBREDDIT_NAME_KEY = "SNK";
|
||||||
static final String IS_BEST_POST_KEY = "IBPK";
|
static final String IS_BEST_POST_KEY = "IBPK";
|
||||||
|
|
||||||
private static final String POST_DATA_PARCELABLE_STATE = "PDPS";
|
|
||||||
private static final String LAST_ITEM_STATE = "LIS";
|
private static final String LAST_ITEM_STATE = "LIS";
|
||||||
private static final String LOADING_STATE_STATE = "LSS";
|
private static final String LOADING_STATE_STATE = "LSS";
|
||||||
private static final String LOAD_SUCCESS_STATE = "LOSS";
|
private static final String LOAD_SUCCESS_STATE = "LOSS";
|
||||||
|
private static final String IS_REFRESH_STATE = "IRS";
|
||||||
|
|
||||||
private CoordinatorLayout mCoordinatorLayout;
|
private CoordinatorLayout mCoordinatorLayout;
|
||||||
private RecyclerView mPostRecyclerView;
|
private RecyclerView mPostRecyclerView;
|
||||||
@ -53,7 +53,6 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
|||||||
private LinearLayout mFetchPostErrorLinearLayout;
|
private LinearLayout mFetchPostErrorLinearLayout;
|
||||||
private ImageView mFetchPostErrorImageView;
|
private ImageView mFetchPostErrorImageView;
|
||||||
|
|
||||||
private ArrayList<Post> mPostData;
|
|
||||||
private String mLastItem;
|
private String mLastItem;
|
||||||
private PaginationSynchronizer mPaginationSynchronizer;
|
private PaginationSynchronizer mPaginationSynchronizer;
|
||||||
|
|
||||||
@ -145,11 +144,11 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
|||||||
mPostViewModel.getPosts().observe(this, new Observer<ArrayList<Post>>() {
|
mPostViewModel.getPosts().observe(this, new Observer<ArrayList<Post>>() {
|
||||||
@Override
|
@Override
|
||||||
public void onChanged(@Nullable ArrayList<Post> posts) {
|
public void onChanged(@Nullable ArrayList<Post> posts) {
|
||||||
mAdapter.changeDataSet(posts);
|
|
||||||
if(posts == null) {
|
if(posts == null) {
|
||||||
Log.i("datachange", Integer.toString(0));
|
Log.i("datachange", Integer.toString(0));
|
||||||
} else {
|
} else {
|
||||||
Log.i("datachange", Integer.toString(posts.size()));
|
Log.i("datachange", Integer.toString(posts.size()));
|
||||||
|
mAdapter.changeDataSet(posts);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -104,11 +104,9 @@ class PostPaginationScrollListener extends RecyclerView.OnScrollListener {
|
|||||||
if(response.isSuccessful()) {
|
if(response.isSuccessful()) {
|
||||||
ParsePost.parsePost(response.body(), locale, new ParsePost.ParsePostListener() {
|
ParsePost.parsePost(response.body(), locale, new ParsePost.ParsePostListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onParsePostSuccess(ArrayList<Post> newPostData, String lastItem) {
|
public void onParsePostSuccess(ArrayList<Post> newPosts, String lastItem) {
|
||||||
if(mPostViewModel != null) {
|
if(mPostViewModel != null) {
|
||||||
ArrayList<Post> posts = mPostViewModel.getPosts().getValue();
|
mPostViewModel.addPosts(newPosts);
|
||||||
posts.addAll(newPostData);
|
|
||||||
mPostViewModel.setPosts(posts);
|
|
||||||
|
|
||||||
mLastItem = lastItem;
|
mLastItem = lastItem;
|
||||||
mPaginationSynchronizer.notifyLastItemChanged(lastItem);
|
mPaginationSynchronizer.notifyLastItemChanged(lastItem);
|
||||||
@ -154,11 +152,9 @@ class PostPaginationScrollListener extends RecyclerView.OnScrollListener {
|
|||||||
if(response.isSuccessful()) {
|
if(response.isSuccessful()) {
|
||||||
ParsePost.parsePost(response.body(), locale, new ParsePost.ParsePostListener() {
|
ParsePost.parsePost(response.body(), locale, new ParsePost.ParsePostListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onParsePostSuccess(ArrayList<Post> newPostData, String lastItem) {
|
public void onParsePostSuccess(ArrayList<Post> newPosts, String lastItem) {
|
||||||
if(mPostViewModel != null) {
|
if(mPostViewModel != null) {
|
||||||
ArrayList<Post> posts = mPostViewModel.getPosts().getValue();
|
mPostViewModel.addPosts(newPosts);
|
||||||
posts.addAll(newPostData);
|
|
||||||
mPostViewModel.setPosts(posts);
|
|
||||||
|
|
||||||
mLastItem = lastItem;
|
mLastItem = lastItem;
|
||||||
mPaginationSynchronizer.notifyLastItemChanged(lastItem);
|
mPaginationSynchronizer.notifyLastItemChanged(lastItem);
|
||||||
|
@ -61,6 +61,7 @@ class PostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHold
|
|||||||
private static final int VIEW_TYPE_DATA = 0;
|
private static final int VIEW_TYPE_DATA = 0;
|
||||||
private static final int VIEW_TYPE_LOADING = 1;
|
private static final int VIEW_TYPE_LOADING = 1;
|
||||||
|
|
||||||
|
private int dataSize;
|
||||||
|
|
||||||
PostRecyclerViewAdapter(Context context, Retrofit oauthRetrofit, SharedPreferences sharedPreferences, PaginationSynchronizer paginationSynchronizer, boolean hasMultipleSubreddits) {
|
PostRecyclerViewAdapter(Context context, Retrofit oauthRetrofit, SharedPreferences sharedPreferences, PaginationSynchronizer paginationSynchronizer, boolean hasMultipleSubreddits) {
|
||||||
if(context != null) {
|
if(context != null) {
|
||||||
@ -505,7 +506,7 @@ class PostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHold
|
|||||||
});
|
});
|
||||||
|
|
||||||
if(post.isNSFW()) {
|
if(post.isNSFW()) {
|
||||||
imageRequestBuilder.apply(RequestOptions.bitmapTransform(new BlurTransformation(25, 3)))
|
imageRequestBuilder.apply(RequestOptions.bitmapTransform(new BlurTransformation(50, 2)))
|
||||||
.into(((DataViewHolder) holder).imageView);
|
.into(((DataViewHolder) holder).imageView);
|
||||||
} else {
|
} else {
|
||||||
imageRequestBuilder.into(((DataViewHolder) holder).imageView);
|
imageRequestBuilder.into(((DataViewHolder) holder).imageView);
|
||||||
@ -526,7 +527,12 @@ class PostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHold
|
|||||||
|
|
||||||
void changeDataSet(ArrayList<Post> posts) {
|
void changeDataSet(ArrayList<Post> posts) {
|
||||||
mPostData = posts;
|
mPostData = posts;
|
||||||
notifyDataSetChanged();
|
if(dataSize == 0 || posts.size() <= dataSize) {
|
||||||
|
notifyDataSetChanged();
|
||||||
|
} else {
|
||||||
|
notifyItemRangeInserted(dataSize, posts.size() - dataSize);
|
||||||
|
}
|
||||||
|
dataSize = posts.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
class DataViewHolder extends RecyclerView.ViewHolder {
|
class DataViewHolder extends RecyclerView.ViewHolder {
|
||||||
|
@ -6,7 +6,7 @@ import android.arch.lifecycle.ViewModel;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
class PostViewModel extends ViewModel {
|
public class PostViewModel extends ViewModel {
|
||||||
private MutableLiveData<ArrayList<Post>> posts = new MutableLiveData<>();
|
private MutableLiveData<ArrayList<Post>> posts = new MutableLiveData<>();
|
||||||
|
|
||||||
LiveData<ArrayList<Post>> getPosts() {
|
LiveData<ArrayList<Post>> getPosts() {
|
||||||
@ -19,4 +19,12 @@ class PostViewModel extends ViewModel {
|
|||||||
void setPosts(ArrayList<Post> posts) {
|
void setPosts(ArrayList<Post> posts) {
|
||||||
this.posts.postValue(posts);
|
this.posts.postValue(posts);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void addPosts(ArrayList<Post> newPosts) {
|
||||||
|
ArrayList<Post> posts = this.posts.getValue();
|
||||||
|
if(posts != null) {
|
||||||
|
posts.addAll(newPosts);
|
||||||
|
this.posts.postValue(posts);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -550,7 +550,7 @@ public class ViewPostDetailActivity extends AppCompatActivity {
|
|||||||
});
|
});
|
||||||
|
|
||||||
if(mPost.isNSFW()) {
|
if(mPost.isNSFW()) {
|
||||||
imageRequestBuilder.apply(RequestOptions.bitmapTransform(new BlurTransformation(50, 3)))
|
imageRequestBuilder.apply(RequestOptions.bitmapTransform(new BlurTransformation(50, 2)))
|
||||||
.into(mImageView);
|
.into(mImageView);
|
||||||
} else {
|
} else {
|
||||||
imageRequestBuilder.into(mImageView);
|
imageRequestBuilder.into(mImageView);
|
||||||
|
Loading…
Reference in New Issue
Block a user