Moved ViewHolder class
This commit is contained in:
parent
2304d1d141
commit
a80bf2265a
|
@ -14,7 +14,7 @@ import de.danoeh.antennapod.core.feed.FeedItem;
|
|||
import de.danoeh.antennapod.core.util.FeedItemUtil;
|
||||
import de.danoeh.antennapod.fragment.ItemPagerFragment;
|
||||
import de.danoeh.antennapod.menuhandler.FeedItemMenuHandler;
|
||||
import de.danoeh.antennapod.view.EpisodeItemViewHolder;
|
||||
import de.danoeh.antennapod.view.viewholder.EpisodeItemViewHolder;
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
|
|
|
@ -6,7 +6,7 @@ import android.widget.BaseAdapter;
|
|||
import de.danoeh.antennapod.R;
|
||||
import de.danoeh.antennapod.activity.MainActivity;
|
||||
import de.danoeh.antennapod.core.feed.FeedItem;
|
||||
import de.danoeh.antennapod.view.EpisodeItemViewHolder;
|
||||
import de.danoeh.antennapod.view.viewholder.EpisodeItemViewHolder;
|
||||
|
||||
/**
|
||||
* Shows a list of downloaded episodes.
|
||||
|
|
|
@ -7,7 +7,7 @@ import android.widget.ListView;
|
|||
import de.danoeh.antennapod.activity.MainActivity;
|
||||
import de.danoeh.antennapod.core.event.PlaybackPositionEvent;
|
||||
import de.danoeh.antennapod.core.feed.FeedItem;
|
||||
import de.danoeh.antennapod.view.EpisodeItemViewHolder;
|
||||
import de.danoeh.antennapod.view.viewholder.EpisodeItemViewHolder;
|
||||
|
||||
/**
|
||||
* List adapter for items of feeds that the user has already subscribed to.
|
||||
|
|
|
@ -19,7 +19,7 @@ import de.danoeh.antennapod.core.preferences.UserPreferences;
|
|||
import de.danoeh.antennapod.core.util.LongList;
|
||||
import de.danoeh.antennapod.fragment.ItemPagerFragment;
|
||||
import de.danoeh.antennapod.menuhandler.FeedItemMenuHandler;
|
||||
import de.danoeh.antennapod.view.EpisodeItemViewHolder;
|
||||
import de.danoeh.antennapod.view.viewholder.EpisodeItemViewHolder;
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
|
|
|
@ -28,7 +28,7 @@ import de.danoeh.antennapod.core.event.FeedListUpdateEvent;
|
|||
import de.danoeh.antennapod.core.event.PlaybackPositionEvent;
|
||||
import de.danoeh.antennapod.core.event.PlayerStatusEvent;
|
||||
import de.danoeh.antennapod.core.event.UnreadItemsUpdateEvent;
|
||||
import de.danoeh.antennapod.view.EpisodeItemViewHolder;
|
||||
import de.danoeh.antennapod.view.viewholder.EpisodeItemViewHolder;
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
|
@ -44,14 +44,11 @@ import de.danoeh.antennapod.core.event.DownloadEvent;
|
|||
import de.danoeh.antennapod.core.event.DownloaderUpdate;
|
||||
import de.danoeh.antennapod.core.event.FeedItemEvent;
|
||||
import de.danoeh.antennapod.core.feed.FeedItem;
|
||||
import de.danoeh.antennapod.core.feed.FeedMedia;
|
||||
import de.danoeh.antennapod.core.service.download.DownloadRequest;
|
||||
import de.danoeh.antennapod.core.service.download.DownloadService;
|
||||
import de.danoeh.antennapod.core.service.download.Downloader;
|
||||
import de.danoeh.antennapod.core.storage.DBWriter;
|
||||
import de.danoeh.antennapod.core.storage.DownloadRequester;
|
||||
import de.danoeh.antennapod.core.util.FeedItemUtil;
|
||||
import de.danoeh.antennapod.core.util.LongList;
|
||||
import de.danoeh.antennapod.core.util.download.AutoUpdateManager;
|
||||
import de.danoeh.antennapod.menuhandler.FeedItemMenuHandler;
|
||||
import de.danoeh.antennapod.menuhandler.MenuItemUtils;
|
||||
|
|
|
@ -10,13 +10,12 @@ import android.view.LayoutInflater;
|
|||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import de.danoeh.antennapod.view.EpisodeItemViewHolder;
|
||||
import de.danoeh.antennapod.view.viewholder.EpisodeItemViewHolder;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import de.danoeh.antennapod.R;
|
||||
import de.danoeh.antennapod.adapter.AllEpisodesRecycleAdapter;
|
||||
import de.danoeh.antennapod.core.event.FavoritesEvent;
|
||||
import de.danoeh.antennapod.core.feed.FeedItem;
|
||||
import de.danoeh.antennapod.core.storage.DBReader;
|
||||
|
|
|
@ -16,7 +16,7 @@ import de.danoeh.antennapod.adapter.AllEpisodesRecycleAdapter;
|
|||
import de.danoeh.antennapod.core.feed.FeedItem;
|
||||
import de.danoeh.antennapod.core.storage.DBReader;
|
||||
import de.danoeh.antennapod.menuhandler.FeedItemMenuHandler;
|
||||
import de.danoeh.antennapod.view.EpisodeItemViewHolder;
|
||||
import de.danoeh.antennapod.view.viewholder.EpisodeItemViewHolder;
|
||||
|
||||
/**
|
||||
* Like 'EpisodesFragment' except that it only shows new episodes and
|
||||
|
|
|
@ -27,7 +27,7 @@ import androidx.recyclerview.widget.SimpleItemAnimator;
|
|||
import com.google.android.material.snackbar.Snackbar;
|
||||
import com.yqritc.recyclerviewflexibledivider.HorizontalDividerItemDecoration;
|
||||
|
||||
import de.danoeh.antennapod.view.EpisodeItemViewHolder;
|
||||
import de.danoeh.antennapod.view.viewholder.EpisodeItemViewHolder;
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
|
@ -46,11 +46,9 @@ import de.danoeh.antennapod.core.event.PlayerStatusEvent;
|
|||
import de.danoeh.antennapod.core.event.UnreadItemsUpdateEvent;
|
||||
import de.danoeh.antennapod.core.event.QueueEvent;
|
||||
import de.danoeh.antennapod.core.feed.FeedItem;
|
||||
import de.danoeh.antennapod.core.feed.FeedMedia;
|
||||
import de.danoeh.antennapod.core.feed.util.PlaybackSpeedUtils;
|
||||
import de.danoeh.antennapod.core.preferences.UserPreferences;
|
||||
import de.danoeh.antennapod.core.service.download.DownloadService;
|
||||
import de.danoeh.antennapod.core.service.download.Downloader;
|
||||
import de.danoeh.antennapod.core.storage.DBReader;
|
||||
import de.danoeh.antennapod.core.storage.DBWriter;
|
||||
import de.danoeh.antennapod.core.storage.DownloadRequester;
|
||||
|
@ -509,7 +507,6 @@ public class QueueFragment extends Fragment {
|
|||
layoutManager = new LinearLayoutManager(getActivity());
|
||||
recyclerView.setLayoutManager(layoutManager);
|
||||
recyclerView.addItemDecoration(new HorizontalDividerItemDecoration.Builder(getActivity()).build());
|
||||
recyclerView.setHasFixedSize(true);
|
||||
registerForContextMenu(recyclerView);
|
||||
|
||||
itemTouchHelper = new ItemTouchHelper(
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
package de.danoeh.antennapod.view;
|
||||
package de.danoeh.antennapod.view.viewholder;
|
||||
|
||||
import android.graphics.Color;
|
||||
import android.os.Build;
|
||||
|
@ -31,11 +31,12 @@ import de.danoeh.antennapod.core.util.Converter;
|
|||
import de.danoeh.antennapod.core.util.DateUtils;
|
||||
import de.danoeh.antennapod.core.util.NetworkUtils;
|
||||
import de.danoeh.antennapod.core.util.ThemeUtils;
|
||||
import de.danoeh.antennapod.view.CircularProgressBar;
|
||||
|
||||
/**
|
||||
* Holds the view which shows FeedItems.
|
||||
*/
|
||||
public class EpisodeItemViewHolder extends RecyclerView.ViewHolder
|
||||
public class EpisodeItemViewHolder extends FeedComponentViewHolder
|
||||
implements QueueRecyclerAdapter.ItemTouchHelperViewHolder {
|
||||
private static final String TAG = "EpisodeItemViewHolder";
|
||||
|
||||
|
@ -104,12 +105,11 @@ public class EpisodeItemViewHolder extends RecyclerView.ViewHolder
|
|||
this.item = item;
|
||||
placeholder.setText(item.getFeed().getTitle());
|
||||
title.setText(item.getTitle());
|
||||
title.setText(item.getTitle());
|
||||
pubDate.setText(DateUtils.formatAbbrev(activity, item.getPubDate()));
|
||||
isNew.setVisibility(item.isNew() ? View.VISIBLE : View.GONE);
|
||||
isFavorite.setVisibility(item.isTagged(FeedItem.TAG_FAVORITE) ? View.VISIBLE : View.GONE);
|
||||
isInQueue.setVisibility(item.isTagged(FeedItem.TAG_QUEUE) ? View.VISIBLE : View.GONE);
|
||||
itemView.setAlpha(item.isPlayed() /*&& makePlayedItemsTransparent*/ ? 0.5f : 1.0f);
|
||||
itemView.setAlpha(item.isPlayed() ? 0.5f : 1.0f);
|
||||
|
||||
ItemActionButton actionButton = ItemActionButton.forItem(item, true, true);
|
||||
actionButton.configure(secondaryActionButton, secondaryActionIcon, activity);
|
|
@ -0,0 +1,15 @@
|
|||
package de.danoeh.antennapod.view.viewholder;
|
||||
|
||||
import android.view.View;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
/**
|
||||
* Holds the view which shows FeedComponents.
|
||||
*/
|
||||
public class FeedComponentViewHolder extends RecyclerView.ViewHolder {
|
||||
|
||||
public FeedComponentViewHolder(@NonNull View itemView) {
|
||||
super(itemView);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,93 @@
|
|||
package de.danoeh.antennapod.view.viewholder;
|
||||
|
||||
import android.os.Build;
|
||||
import android.text.Layout;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.TextView;
|
||||
import androidx.cardview.widget.CardView;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import com.joanzapata.iconify.Iconify;
|
||||
import de.danoeh.antennapod.R;
|
||||
import de.danoeh.antennapod.activity.MainActivity;
|
||||
import de.danoeh.antennapod.adapter.CoverLoader;
|
||||
import de.danoeh.antennapod.adapter.QueueRecyclerAdapter;
|
||||
import de.danoeh.antennapod.adapter.actionbutton.ItemActionButton;
|
||||
import de.danoeh.antennapod.core.event.PlaybackPositionEvent;
|
||||
import de.danoeh.antennapod.core.feed.Feed;
|
||||
import de.danoeh.antennapod.core.feed.FeedItem;
|
||||
import de.danoeh.antennapod.core.feed.FeedMedia;
|
||||
import de.danoeh.antennapod.core.feed.MediaType;
|
||||
import de.danoeh.antennapod.core.feed.util.ImageResourceUtils;
|
||||
import de.danoeh.antennapod.core.service.download.DownloadRequest;
|
||||
import de.danoeh.antennapod.core.storage.DownloadRequester;
|
||||
import de.danoeh.antennapod.core.util.Converter;
|
||||
import de.danoeh.antennapod.core.util.DateUtils;
|
||||
import de.danoeh.antennapod.core.util.NetworkUtils;
|
||||
import de.danoeh.antennapod.core.util.ThemeUtils;
|
||||
import de.danoeh.antennapod.view.CircularProgressBar;
|
||||
|
||||
/**
|
||||
* Holds the view which shows feeds.
|
||||
*/
|
||||
public class FeedViewHolder extends FeedComponentViewHolder {
|
||||
private static final String TAG = "FeedViewHolder";
|
||||
|
||||
private final View container;
|
||||
public final ImageView dragHandle;
|
||||
private final TextView placeholder;
|
||||
private final ImageView cover;
|
||||
private final TextView title;
|
||||
public final View secondaryActionButton;
|
||||
public final ImageView secondaryActionIcon;
|
||||
private final CircularProgressBar secondaryActionProgress;
|
||||
public final CardView coverHolder;
|
||||
|
||||
private final MainActivity activity;
|
||||
private Feed feed;
|
||||
|
||||
public FeedViewHolder(MainActivity activity, ViewGroup parent) {
|
||||
super(LayoutInflater.from(activity).inflate(R.layout.feeditemlist_item, parent, false));
|
||||
this.activity = activity;
|
||||
container = itemView.findViewById(R.id.container);
|
||||
dragHandle = itemView.findViewById(R.id.drag_handle);
|
||||
placeholder = itemView.findViewById(R.id.txtvPlaceholder);
|
||||
cover = itemView.findViewById(R.id.imgvCover);
|
||||
title = itemView.findViewById(R.id.txtvTitle);
|
||||
if (Build.VERSION.SDK_INT >= 23) {
|
||||
title.setHyphenationFrequency(Layout.HYPHENATION_FREQUENCY_FULL);
|
||||
}
|
||||
|
||||
itemView.findViewById(R.id.status).setVisibility(View.GONE);
|
||||
itemView.findViewById(R.id.progress).setVisibility(View.GONE);
|
||||
secondaryActionProgress = itemView.findViewById(R.id.secondaryActionProgress);
|
||||
secondaryActionButton = itemView.findViewById(R.id.secondaryActionButton);
|
||||
secondaryActionIcon = itemView.findViewById(R.id.secondaryActionIcon);
|
||||
coverHolder = itemView.findViewById(R.id.coverHolder);
|
||||
itemView.setTag(this);
|
||||
}
|
||||
|
||||
public void bind(Feed feed) {
|
||||
this.feed = feed;
|
||||
placeholder.setText(feed.getTitle());
|
||||
title.setText(feed.getTitle());
|
||||
|
||||
/*ItemActionButton actionButton = ItemActionButton.forItem(item, true, true);
|
||||
actionButton.configure(secondaryActionButton, secondaryActionIcon, activity);
|
||||
secondaryActionButton.setFocusable(false);
|
||||
secondaryActionProgress.setPercentage(0, null);*/
|
||||
|
||||
if (coverHolder.getVisibility() == View.VISIBLE) {
|
||||
new CoverLoader(activity)
|
||||
.withUri(feed.getImageLocation())
|
||||
.withPlaceholderView(placeholder)
|
||||
.withCoverView(cover)
|
||||
.load();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -34,7 +34,7 @@
|
|||
app:fastScrollVerticalThumbDrawable="@drawable/thumb_drawable"
|
||||
app:fastScrollVerticalTrackDrawable="@drawable/line_drawable"
|
||||
tools:itemCount="13"
|
||||
tools:listitem="@layout/new_episodes_listitem" />
|
||||
tools:listitem="@layout/feeditemlist_item" />
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/progLoading"
|
||||
|
|
Loading…
Reference in New Issue