diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/adapters/BookmarkAdapter.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/adapters/BookmarkAdapter.java index 599b3b4a4..b3593babe 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/ui/adapters/BookmarkAdapter.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/adapters/BookmarkAdapter.java @@ -155,7 +155,7 @@ public int getItemViewType(int position) { return 0; } - @SuppressLint("ClickableViewAccessibility") + @NonNull @Override public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { if (viewType == BookmarkNodeType.ITEM.ordinal()) { @@ -166,15 +166,52 @@ public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int binding.setCallback(mBookmarkItemCallback); binding.setIsHovered(false); binding.setIsNarrow(mIsNarrowLayout); + + return new BookmarkViewHolder(binding); + + } else if (viewType == BookmarkNodeType.FOLDER.ordinal()) { + BookmarkItemFolderBinding binding = DataBindingUtil + .inflate(LayoutInflater.from(parent.getContext()), R.layout.bookmark_item_folder, + parent, false); + binding.setCallback(mBookmarkItemFolderCallback); + + return new BookmarkFolderViewHolder(binding); + + } else if (viewType == BookmarkNodeType.SEPARATOR.ordinal()) { + BookmarkSeparatorBinding binding = DataBindingUtil + .inflate(LayoutInflater.from(parent.getContext()), R.layout.bookmark_separator, + parent, false); + + return new BookmarkSeparatorViewHolder(binding); + } + + throw new IllegalArgumentException("Invalid view Type"); + } + + @SuppressLint("ClickableViewAccessibility") + @Override + public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { + Bookmark item = mDisplayList.get(position); + + if (holder instanceof BookmarkViewHolder) { + BookmarkViewHolder bookmarkHolder = (BookmarkViewHolder) holder; + BookmarkItemBinding binding = bookmarkHolder.binding; + binding.setItem(item); + binding.setIsNarrow(mIsNarrowLayout); binding.layout.setOnHoverListener((view, motionEvent) -> { int ev = motionEvent.getActionMasked(); switch (ev) { case MotionEvent.ACTION_HOVER_ENTER: binding.setIsHovered(true); + view.getBackground().setState(new int[]{android.R.attr.state_hovered}); + view.postInvalidate(); return false; + case MotionEvent.ACTION_CANCEL: case MotionEvent.ACTION_HOVER_EXIT: + view.getBackground().setState(new int[]{android.R.attr.state_active}); binding.setIsHovered(false); + view.postInvalidate(); return false; } @@ -245,40 +282,27 @@ public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int return false; }); - return new BookmarkViewHolder(binding); - - } else if (viewType == BookmarkNodeType.FOLDER.ordinal()) { - BookmarkItemFolderBinding binding = DataBindingUtil - .inflate(LayoutInflater.from(parent.getContext()), R.layout.bookmark_item_folder, - parent, false); - binding.setCallback(mBookmarkItemFolderCallback); - - return new BookmarkFolderViewHolder(binding); - - } else if (viewType == BookmarkNodeType.SEPARATOR.ordinal()) { - BookmarkSeparatorBinding binding = DataBindingUtil - .inflate(LayoutInflater.from(parent.getContext()), R.layout.bookmark_separator, - parent, false); - - return new BookmarkSeparatorViewHolder(binding); - } - - throw new IllegalArgumentException("Invalid view Type"); - } - - @Override - public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { - Bookmark item = mDisplayList.get(position); - - if (holder instanceof BookmarkViewHolder) { - BookmarkViewHolder bookmarkHolder = (BookmarkViewHolder) holder; - bookmarkHolder.binding.setItem(item); - bookmarkHolder.binding.setIsNarrow(mIsNarrowLayout); - } else if (holder instanceof BookmarkFolderViewHolder) { BookmarkFolderViewHolder bookmarkHolder = (BookmarkFolderViewHolder) holder; bookmarkHolder.binding.setItem(item); bookmarkHolder.binding.executePendingBindings(); + bookmarkHolder.binding.layout.setOnHoverListener((view, motionEvent) -> { + int ev = motionEvent.getActionMasked(); + switch (ev) { + case MotionEvent.ACTION_HOVER_ENTER: + view.getBackground().setState(new int[]{android.R.attr.state_hovered}); + view.postInvalidate(); + return false; + + case MotionEvent.ACTION_CANCEL: + case MotionEvent.ACTION_HOVER_EXIT: + view.getBackground().setState(new int[]{android.R.attr.state_active}); + view.postInvalidate(); + return false; + } + + return false; + }); } else if (holder instanceof BookmarkSeparatorViewHolder) { BookmarkSeparatorViewHolder bookmarkHolder = (BookmarkSeparatorViewHolder) holder; diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/adapters/DownloadsAdapter.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/adapters/DownloadsAdapter.java index fb5dc3641..01ba9be02 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/ui/adapters/DownloadsAdapter.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/adapters/DownloadsAdapter.java @@ -120,7 +120,7 @@ public int getItemPosition(long id) { return 0; } - @SuppressLint("ClickableViewAccessibility") + @NonNull @Override public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { DownloadItemBinding binding = DataBindingUtil @@ -129,15 +129,31 @@ public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int binding.setCallback(mDownloadItemCallback); binding.setIsHovered(false); binding.setIsNarrow(mIsNarrowLayout); + + return new DownloadItemViewHolder(binding); + } + + @SuppressLint("ClickableViewAccessibility") + @Override + public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { + DownloadItemViewHolder item = (DownloadItemViewHolder) holder; + DownloadItemBinding binding = item.binding; + item.binding.setItem(mDownloadsList.get(position)); + item.binding.setIsNarrow(mIsNarrowLayout); binding.layout.setOnHoverListener((view, motionEvent) -> { int ev = motionEvent.getActionMasked(); switch (ev) { case MotionEvent.ACTION_HOVER_ENTER: binding.setIsHovered(true); + view.getBackground().setState(new int[]{android.R.attr.state_hovered}); + view.postInvalidate(); return false; + case MotionEvent.ACTION_CANCEL: case MotionEvent.ACTION_HOVER_EXIT: + view.getBackground().setState(new int[]{android.R.attr.state_active}); binding.setIsHovered(false); + view.postInvalidate(); return false; } @@ -207,15 +223,6 @@ public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int } return false; }); - - return new DownloadItemViewHolder(binding); - } - - @Override - public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { - DownloadItemViewHolder item = (DownloadItemViewHolder) holder; - item.binding.setItem(mDownloadsList.get(position)); - item.binding.setIsNarrow(mIsNarrowLayout); } @Override diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/adapters/HistoryAdapter.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/adapters/HistoryAdapter.java index a2a2fef73..48c0cef19 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/ui/adapters/HistoryAdapter.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/adapters/HistoryAdapter.java @@ -127,7 +127,7 @@ public int getItemPosition(long id) { return 0; } - @SuppressLint("ClickableViewAccessibility") + @NonNull @Override public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { if (viewType == TYPE_ITEM) { @@ -137,15 +137,44 @@ public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int binding.setCallback(mHistoryItemCallback); binding.setIsHovered(false); binding.setIsNarrow(mIsNarrowLayout); + + return new HistoryItemViewHolder(binding); + + } else if (viewType == TYPE_HEADER){ + HistoryItemHeaderBinding binding = DataBindingUtil + .inflate(LayoutInflater.from(parent.getContext()), R.layout.history_item_header, + parent, false); + + return new HistoryItemViewHeaderHolder(binding); + } + + throw new RuntimeException("there is no type that matches the type " + viewType + " + make sure your using types correctly"); + } + + @SuppressLint("ClickableViewAccessibility") + @Override + public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { + VisitInfo item = mHistoryList.get(position); + + if (holder instanceof HistoryItemViewHolder) { + HistoryItemViewHolder historyHolder = (HistoryItemViewHolder) holder; + HistoryItemBinding binding = historyHolder.binding; + binding.setItem(item); + binding.setIsNarrow(mIsNarrowLayout); binding.layout.setOnHoverListener((view, motionEvent) -> { int ev = motionEvent.getActionMasked(); switch (ev) { case MotionEvent.ACTION_HOVER_ENTER: binding.setIsHovered(true); + view.getBackground().setState(new int[]{android.R.attr.state_hovered}); + view.postInvalidate(); return false; + case MotionEvent.ACTION_CANCEL: case MotionEvent.ACTION_HOVER_EXIT: + view.getBackground().setState(new int[]{android.R.attr.state_active}); binding.setIsHovered(false); + view.postInvalidate(); return false; } @@ -216,29 +245,9 @@ public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int return false; }); - return new HistoryItemViewHolder(binding); - - } else if (viewType == TYPE_HEADER){ - HistoryItemHeaderBinding binding = DataBindingUtil - .inflate(LayoutInflater.from(parent.getContext()), R.layout.history_item_header, - parent, false); - - return new HistoryItemViewHeaderHolder(binding); - } - - throw new RuntimeException("there is no type that matches the type " + viewType + " + make sure your using types correctly"); - } - - @Override - public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { - if (holder instanceof HistoryItemViewHolder) { - HistoryItemViewHolder item = (HistoryItemViewHolder) holder; - item.binding.setItem(mHistoryList.get(position)); - item.binding.setIsNarrow(mIsNarrowLayout); - } else if (holder instanceof HistoryItemViewHeaderHolder) { - HistoryItemViewHeaderHolder item = (HistoryItemViewHeaderHolder) holder; - item.binding.setTitle(mHistoryList.get(position).getTitle()); + HistoryItemViewHeaderHolder historyHolder = (HistoryItemViewHeaderHolder) holder; + historyHolder.binding.setTitle(item.getTitle()); } } diff --git a/app/src/main/res/layout/bookmark_item.xml b/app/src/main/res/layout/bookmark_item.xml index 2011fc91c..1ff9c801e 100644 --- a/app/src/main/res/layout/bookmark_item.xml +++ b/app/src/main/res/layout/bookmark_item.xml @@ -52,6 +52,7 @@ android:layout_centerVertical="true" android:gravity="center_vertical" android:layout_toStartOf="@id/buttons_container" + android:addStatesFromChildren="true" android:orientation="@{isNarrow ? LinearLayout.VERTICAL : LinearLayout.HORIZONTAL}">