Use the displaying list (after filtering) for scrolling to positions in the thread.

filtering
Floens 10 years ago
parent 97a0d1b4a8
commit 5a564ddc32
  1. 17
      Clover/app/src/main/java/org/floens/chan/core/presenter/ThreadPresenter.java
  2. 4
      Clover/app/src/main/java/org/floens/chan/ui/adapter/PostAdapter.java
  3. 5
      Clover/app/src/main/java/org/floens/chan/ui/layout/ThreadLayout.java
  4. 6
      Clover/app/src/main/java/org/floens/chan/ui/layout/ThreadListLayout.java

@ -278,8 +278,9 @@ public class ThreadPresenter implements ChanLoader.ChanLoaderCallback, PostAdapt
public void scrollToImage(PostImage postImage, boolean smooth) { public void scrollToImage(PostImage postImage, boolean smooth) {
if (!searchOpen) { if (!searchOpen) {
int position = -1; int position = -1;
for (int i = 0; i < chanLoader.getThread().posts.size(); i++) { List<Post> posts = threadPresenterCallback.getDisplayingPosts();
Post post = chanLoader.getThread().posts.get(i); for (int i = 0; i < posts.size(); i++) {
Post post = posts.get(i);
if (post.hasImage && post.imageUrl.equals(postImage.imageUrl)) { if (post.hasImage && post.imageUrl.equals(postImage.imageUrl)) {
position = i; position = i;
break; break;
@ -293,8 +294,9 @@ public class ThreadPresenter implements ChanLoader.ChanLoaderCallback, PostAdapt
public void scrollToPost(Post needle, boolean smooth) { public void scrollToPost(Post needle, boolean smooth) {
int position = -1; int position = -1;
for (int i = 0; i < chanLoader.getThread().posts.size(); i++) { List<Post> posts = threadPresenterCallback.getDisplayingPosts();
Post post = chanLoader.getThread().posts.get(i); for (int i = 0; i < posts.size(); i++) {
Post post = posts.get(i);
if (post.no == needle.no) { if (post.no == needle.no) {
position = i; position = i;
break; break;
@ -335,8 +337,9 @@ public class ThreadPresenter implements ChanLoader.ChanLoaderCallback, PostAdapt
public void onThumbnailClicked(Post post, ThumbnailView thumbnail) { public void onThumbnailClicked(Post post, ThumbnailView thumbnail) {
List<PostImage> images = new ArrayList<>(); List<PostImage> images = new ArrayList<>();
int index = -1; int index = -1;
for (int i = 0; i < chanLoader.getThread().posts.size(); i++) { List<Post> posts = threadPresenterCallback.getDisplayingPosts();
Post item = chanLoader.getThread().posts.get(i); for (int i = 0; i < posts.size(); i++) {
Post item = posts.get(i);
if (item.hasImage) { if (item.hasImage) {
images.add(new PostImage(String.valueOf(item.tim), item.thumbnailUrl, item.imageUrl, item.filename, item.ext, item.imageWidth, item.imageHeight, item.spoiler)); images.add(new PostImage(String.valueOf(item.tim), item.thumbnailUrl, item.imageUrl, item.filename, item.ext, item.imageWidth, item.imageHeight, item.spoiler));
if (item.no == post.no) { if (item.no == post.no) {
@ -621,6 +624,8 @@ public class ThreadPresenter implements ChanLoader.ChanLoaderCallback, PostAdapt
void showPostsPopup(Post forPost, List<Post> posts); void showPostsPopup(Post forPost, List<Post> posts);
List<Post> getDisplayingPosts();
void showImages(List<PostImage> images, int index, Loadable loadable, ThumbnailView thumbnail); void showImages(List<PostImage> images, int index, Loadable loadable, ThumbnailView thumbnail);
void scrollTo(int position, boolean smooth); void scrollTo(int position, boolean smooth);

@ -144,6 +144,10 @@ public class PostAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
return displayList.size(); return displayList.size();
} }
public List<Post> getDisplayList() {
return displayList;
}
public void cleanup() { public void cleanup() {
highlightedPost = null; highlightedPost = null;
highlightedPostId = null; highlightedPostId = null;

@ -285,6 +285,11 @@ public class ThreadLayout extends CoordinatorLayout implements ThreadPresenter.T
postPopupHelper.showPosts(forPost, posts); postPopupHelper.showPosts(forPost, posts);
} }
@Override
public List<Post> getDisplayingPosts() {
return threadListLayout.getDisplayingPosts();
}
@Override @Override
public void showImages(List<PostImage> images, int index, Loadable loadable, ThumbnailView thumbnail) { public void showImages(List<PostImage> images, int index, Loadable loadable, ThumbnailView thumbnail) {
callback.showImages(images, index, loadable, thumbnail); callback.showImages(images, index, loadable, thumbnail);

@ -41,6 +41,8 @@ import org.floens.chan.ui.view.ThumbnailView;
import org.floens.chan.utils.AndroidUtils; import org.floens.chan.utils.AndroidUtils;
import org.floens.chan.utils.AnimationUtils; import org.floens.chan.utils.AnimationUtils;
import java.util.List;
import static org.floens.chan.utils.AndroidUtils.ROBOTO_MEDIUM; import static org.floens.chan.utils.AndroidUtils.ROBOTO_MEDIUM;
import static org.floens.chan.utils.AndroidUtils.dp; import static org.floens.chan.utils.AndroidUtils.dp;
import static org.floens.chan.utils.AndroidUtils.getAttrColor; import static org.floens.chan.utils.AndroidUtils.getAttrColor;
@ -313,6 +315,10 @@ public class ThreadListLayout extends LinearLayout implements ReplyLayout.ReplyL
showingThread = null; showingThread = null;
} }
public List<Post> getDisplayingPosts() {
return postAdapter.getDisplayList();
}
public ThumbnailView getThumbnail(PostImage postImage) { public ThumbnailView getThumbnail(PostImage postImage) {
RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager(); RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();

Loading…
Cancel
Save