changed adapter view item styling

This commit is contained in:
nuclearfog 2021-01-17 14:10:35 +01:00
parent be5bf83ee5
commit 672b1149f5
No known key found for this signature in database
GPG Key ID: D5490E4A81F97B14
10 changed files with 201 additions and 149 deletions

View File

@ -130,7 +130,7 @@ public class MediaViewer extends AppCompatActivity implements OnImageClickListen
zoomImage = findViewById(R.id.image_full);
videoView = findViewById(R.id.video_view);
videoController = new MediaController(this);
adapter = new ImageAdapter(this);
adapter = new ImageAdapter(getApplicationContext(), this);
videoView.setZOrderOnTop(true);
videoView.setOnPreparedListener(this);
videoView.setOnErrorListener(this);

View File

@ -58,10 +58,10 @@ public class FontAdapter extends BaseAdapter {
tv = new TextView(parent.getContext());
tv.setTextSize(COMPLEX_UNIT_SP, FONT_SIZE);
tv.setPadding(TEXT_PADDING, 0, TEXT_PADDING, 0);
tv.setTextColor(settings.getFontColor());
}
tv.setText(name);
tv.setTypeface(font);
tv.setTextColor(settings.getFontColor());
return tv;
}
}

View File

@ -1,12 +1,15 @@
package org.nuclearfog.twidda.adapter;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.PorterDuffColorFilter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ProgressBar;
import androidx.annotation.MainThread;
import androidx.annotation.NonNull;
@ -15,10 +18,12 @@ import androidx.recyclerview.widget.RecyclerView.ViewHolder;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.holder.ImageHolder;
import org.nuclearfog.twidda.database.GlobalSettings;
import java.util.LinkedList;
import java.util.List;
import static android.graphics.PorterDuff.Mode.SRC_ATOP;
import static android.view.View.VISIBLE;
import static androidx.recyclerview.widget.RecyclerView.NO_POSITION;
@ -38,6 +43,7 @@ public class ImageAdapter extends Adapter<ViewHolder> {
private static final int LOADING = 1;
private OnImageClickListener itemClickListener;
private GlobalSettings settings;
private List<ImageHolder> images = new LinkedList<>();
private boolean loading = false;
@ -48,8 +54,9 @@ public class ImageAdapter extends Adapter<ViewHolder> {
*
* @param itemClickListener Click listener for images
*/
public ImageAdapter(OnImageClickListener itemClickListener) {
public ImageAdapter(Context context, OnImageClickListener itemClickListener) {
this.itemClickListener = itemClickListener;
settings = GlobalSettings.getInstance(context);
}
/**
@ -142,7 +149,7 @@ public class ImageAdapter extends Adapter<ViewHolder> {
return item;
} else {
View view = inflater.inflate(R.layout.item_image_load, parent, false);
return new LoadItem(view);
return new LoadItem(view, settings.getHighlightColor());
}
}
@ -175,13 +182,16 @@ public class ImageAdapter extends Adapter<ViewHolder> {
*/
private final class LoadItem extends ViewHolder {
LoadItem(View v) {
LoadItem(View v, int color) {
super(v);
ProgressBar progress = v.findViewById(R.id.imageitem_progress);
progress.getIndeterminateDrawable().mutate().setColorFilter(new PorterDuffColorFilter(color, SRC_ATOP));
}
}
public interface OnImageClickListener {
/**
* simple click on image_add
*

View File

@ -2,6 +2,7 @@ package org.nuclearfog.twidda.adapter;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.PorterDuffColorFilter;
import android.graphics.drawable.Drawable;
import android.view.LayoutInflater;
import android.view.View;
@ -15,6 +16,7 @@ import android.widget.TextView;
import androidx.annotation.MainThread;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.cardview.widget.CardView;
import androidx.recyclerview.widget.RecyclerView.Adapter;
import androidx.recyclerview.widget.RecyclerView.ViewHolder;
@ -24,7 +26,6 @@ import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.holder.UserListList;
import org.nuclearfog.twidda.backend.items.User;
import org.nuclearfog.twidda.backend.items.UserList;
import org.nuclearfog.twidda.backend.utils.AppStyles;
import org.nuclearfog.twidda.database.GlobalSettings;
import org.nuclearfog.twidda.fragment.UserListFragment;
@ -163,13 +164,7 @@ public class ListAdapter extends Adapter<ViewHolder> {
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
if (viewType == ITEM_LIST) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_list, parent, false);
final ListHolder vh = new ListHolder(v);
AppStyles.setTheme(settings, v);
setIcon(vh.createdAt, icons[3]);
setIcon(vh.followIndicator, icons[4]);
vh.memberIcon.setImageDrawable(icons[5]);
vh.subscrIcon.setImageDrawable(icons[6]);
final ListHolder vh = new ListHolder(v, settings);
vh.pb_image.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
@ -193,9 +188,7 @@ public class ListAdapter extends Adapter<ViewHolder> {
return vh;
} else {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_placeholder, parent, false);
final PlaceHolder ph = new PlaceHolder(v);
ph.loadBtn.setTypeface(settings.getFontFace());
ph.loadBtn.setTextColor(settings.getFontColor());
final PlaceHolder ph = new PlaceHolder(v, settings);
ph.loadBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
@ -219,13 +212,13 @@ public class ListAdapter extends Adapter<ViewHolder> {
ListHolder vh = (ListHolder) holder;
UserList item = data.get(index);
User owner = item.getListOwner();
vh.title.setText(item.getTitle());
vh.username.setText(owner.getUsername());
vh.screenname.setText(owner.getScreenname());
vh.description.setText(item.getDescription());
vh.createdAt.setText(getTimeString(item.getCreatedAt()));
vh.memberCount.setText(formatter.format(item.getMemberCount()));
vh.subscriberCount.setText(formatter.format(item.getSubscriberCount()));
vh.textViews[0].setText(item.getTitle());
vh.textViews[2].setText(owner.getUsername());
vh.textViews[3].setText(owner.getScreenname());
vh.textViews[1].setText(item.getDescription());
vh.textViews[4].setText(getTimeString(item.getCreatedAt()));
vh.textViews[5].setText(formatter.format(item.getMemberCount()));
vh.textViews[6].setText(formatter.format(item.getSubscriberCount()));
if (settings.getImageLoad() && owner.hasProfileImage()) {
String pbLink = owner.getImageLink();
if (!owner.hasDefaultProfileImage())
@ -233,24 +226,24 @@ public class ListAdapter extends Adapter<ViewHolder> {
Picasso.get().load(pbLink).error(R.drawable.no_image).into(vh.pb_image);
}
if (!item.isListOwner() && item.isFollowing()) {
vh.followIndicator.setVisibility(VISIBLE);
vh.textViews[7].setVisibility(VISIBLE);
} else {
vh.followIndicator.setVisibility(GONE);
vh.textViews[7].setVisibility(GONE);
}
if (owner.isVerified()) {
setIcon(vh.username, icons[0]);
setIcon(vh.textViews[2], icons[0]);
} else {
setIcon(vh.username, null);
setIcon(vh.textViews[2], null);
}
if (owner.isLocked()) {
setIcon(vh.screenname, icons[1]);
setIcon(vh.textViews[3], icons[1]);
} else {
setIcon(vh.screenname, null);
setIcon(vh.textViews[3], null);
}
if (item.isPrivate()) {
setIcon(vh.title, icons[2]);
setIcon(vh.textViews[0], icons[2]);
} else {
setIcon(vh.title, null);
setIcon(vh.textViews[0], null);
}
} else if (holder instanceof PlaceHolder) {
PlaceHolder placeHolder = (PlaceHolder) holder;
@ -297,23 +290,34 @@ public class ListAdapter extends Adapter<ViewHolder> {
* view holder class for an user list item
*/
private final class ListHolder extends ViewHolder {
final ImageView pb_image, subscrIcon, memberIcon;
final TextView title, username, screenname, description, createdAt;
final TextView memberCount, subscriberCount, followIndicator;
ListHolder(View v) {
final ImageView pb_image, subscrIcon, memberIcon;
final TextView[] textViews = new TextView[8];
ListHolder(View v, GlobalSettings settings) {
super(v);
CardView background = (CardView) v;
pb_image = v.findViewById(R.id.list_owner_profile);
memberIcon = v.findViewById(R.id.list_member_icon);
subscrIcon = v.findViewById(R.id.list_subscriber_icon);
followIndicator = v.findViewById(R.id.list_action);
title = v.findViewById(R.id.list_title);
username = v.findViewById(R.id.list_ownername);
screenname = v.findViewById(R.id.list_screenname);
description = v.findViewById(R.id.list_description);
createdAt = v.findViewById(R.id.list_createdat);
memberCount = v.findViewById(R.id.list_member);
subscriberCount = v.findViewById(R.id.list_subscriber);
textViews[0] = v.findViewById(R.id.list_title);
textViews[1] = v.findViewById(R.id.list_description);
textViews[2] = v.findViewById(R.id.list_ownername);
textViews[3] = v.findViewById(R.id.list_screenname);
textViews[4] = v.findViewById(R.id.list_createdat);
textViews[5] = v.findViewById(R.id.list_member);
textViews[6] = v.findViewById(R.id.list_subscriber);
textViews[7] = v.findViewById(R.id.list_action);
for (TextView tv : textViews) {
tv.setTextColor(settings.getFontColor());
tv.setTypeface(settings.getFontFace());
}
background.setCardBackgroundColor(settings.getCardColor());
textViews[4].setCompoundDrawablesWithIntrinsicBounds(icons[3], null, null, null);
textViews[7].setCompoundDrawablesWithIntrinsicBounds(icons[4], null, null, null);
memberIcon.setImageDrawable(icons[5]);
subscrIcon.setImageDrawable(icons[6]);
}
}
@ -325,10 +329,16 @@ public class ListAdapter extends Adapter<ViewHolder> {
final ProgressBar loadCircle;
final Button loadBtn;
PlaceHolder(@NonNull View v) {
PlaceHolder(@NonNull View v, GlobalSettings settings) {
super(v);
CardView background = (CardView) v;
loadCircle = v.findViewById(R.id.placeholder_loading);
loadBtn = v.findViewById(R.id.placeholder_button);
loadBtn.setTypeface(settings.getFontFace());
loadBtn.setTextColor(settings.getFontColor());
loadCircle.getIndeterminateDrawable().mutate().setColorFilter(new PorterDuffColorFilter(settings.getHighlightColor(), SRC_ATOP));
background.setCardBackgroundColor(settings.getCardColor());
}
}

View File

@ -101,9 +101,9 @@ public class LocationAdapter extends BaseAdapter {
tv = new TextView(parent.getContext());
tv.setTextSize(COMPLEX_UNIT_DIP, TEXT_SIZE);
tv.setPadding(TEXT_PADDING, 0, TEXT_PADDING, 0);
tv.setTextColor(settings.getFontColor());
tv.setTypeface(settings.getFontFace());
}
tv.setTextColor(settings.getFontColor());
tv.setTypeface(settings.getFontFace());
tv.setText(data.get(pos).getName());
return tv;
}

View File

@ -15,6 +15,7 @@ import android.widget.TextView;
import androidx.annotation.MainThread;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.cardview.widget.CardView;
import androidx.recyclerview.widget.RecyclerView.Adapter;
import androidx.recyclerview.widget.RecyclerView.ViewHolder;
@ -25,7 +26,6 @@ import org.nuclearfog.tag.Tagger.OnTagClickListener;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.items.Message;
import org.nuclearfog.twidda.backend.items.User;
import org.nuclearfog.twidda.backend.utils.AppStyles;
import org.nuclearfog.twidda.database.GlobalSettings;
import java.util.ArrayList;
@ -109,11 +109,8 @@ public class MessageAdapter extends Adapter<ViewHolder> {
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_dm, parent, false);
final MessageHolder vh = new MessageHolder(view);
AppStyles.setTheme(settings, view);
setIcon(vh.receivername, icons[2]);
vh.message.setMovementMethod(LinkMovementMethod.getInstance());
vh.answer.setOnClickListener(new View.OnClickListener() {
final MessageHolder vh = new MessageHolder(view, settings);
vh.buttons[0].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int position = vh.getLayoutPosition();
@ -122,7 +119,7 @@ public class MessageAdapter extends Adapter<ViewHolder> {
}
}
});
vh.delete.setOnClickListener(new View.OnClickListener() {
vh.buttons[1].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int position = vh.getLayoutPosition();
@ -152,21 +149,21 @@ public class MessageAdapter extends Adapter<ViewHolder> {
text = Tagger.makeTextWithLinks(message.getText(), settings.getHighlightColor(), itemClickListener);
MessageHolder holder = (MessageHolder) vh;
holder.message.setText(text);
holder.username.setText(sender.getUsername());
holder.screenname.setText(sender.getScreenname());
holder.createdAt.setText(getTimeString(message.getTime()));
holder.receivername.setText(message.getReceiver().getScreenname());
holder.textViews[0].setText(sender.getUsername());
holder.textViews[1].setText(sender.getScreenname());
holder.textViews[2].setText(message.getReceiver().getScreenname());
holder.textViews[3].setText(getTimeString(message.getTime()));
holder.textViews[4].setText(text);
if (sender.isVerified()) {
setIcon(holder.username, icons[0]);
setIcon(holder.textViews[0], icons[0]);
} else {
setIcon(holder.username, null);
setIcon(holder.textViews[0], null);
}
if (sender.isLocked()) {
setIcon(holder.screenname, icons[1]);
setIcon(holder.textViews[1], icons[1]);
} else {
setIcon(holder.screenname, null);
setIcon(holder.textViews[1], null);
}
if (settings.getImageLoad() && sender.hasProfileImage()) {
String pbLink = sender.getImageLink();
@ -201,25 +198,34 @@ public class MessageAdapter extends Adapter<ViewHolder> {
* Holder class for a message view
*/
private final class MessageHolder extends ViewHolder {
final ImageView profile_img;
final TextView username;
final TextView screenname;
final TextView receivername;
final TextView createdAt;
final TextView message;
final Button answer;
final Button delete;
MessageHolder(View v) {
final TextView[] textViews = new TextView[5];
final Button[] buttons = new Button[2];
final ImageView profile_img;
MessageHolder(View v, GlobalSettings settings) {
super(v);
CardView background = (CardView) v;
profile_img = v.findViewById(R.id.dm_profileImg);
username = v.findViewById(R.id.dm_username);
screenname = v.findViewById(R.id.dm_screenname);
receivername = v.findViewById(R.id.dm_receiver);
createdAt = v.findViewById(R.id.dm_time);
message = v.findViewById(R.id.dm_message);
answer = v.findViewById(R.id.dm_answer);
delete = v.findViewById(R.id.dm_delete);
textViews[0] = v.findViewById(R.id.dm_username);
textViews[1] = v.findViewById(R.id.dm_screenname);
textViews[2] = v.findViewById(R.id.dm_receiver);
textViews[3] = v.findViewById(R.id.dm_time);
textViews[4] = v.findViewById(R.id.dm_message);
buttons[0] = v.findViewById(R.id.dm_answer);
buttons[1] = v.findViewById(R.id.dm_delete);
for (TextView tv : textViews) {
tv.setTextColor(settings.getFontColor());
tv.setTypeface(settings.getFontFace());
}
for (Button button : buttons) {
button.setTextColor(settings.getFontColor());
button.setTypeface(settings.getFontFace());
}
background.setCardBackgroundColor(settings.getCardColor());
textViews[2].setCompoundDrawables(icons[2], null, null, null);
textViews[4].setMovementMethod(LinkMovementMethod.getInstance());
}
}

View File

@ -9,12 +9,12 @@ import android.widget.TextView;
import androidx.annotation.MainThread;
import androidx.annotation.NonNull;
import androidx.cardview.widget.CardView;
import androidx.recyclerview.widget.RecyclerView.Adapter;
import androidx.recyclerview.widget.RecyclerView.ViewHolder;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.items.Trend;
import org.nuclearfog.twidda.backend.utils.AppStyles;
import org.nuclearfog.twidda.database.GlobalSettings;
import java.text.NumberFormat;
@ -85,9 +85,7 @@ public class TrendAdapter extends Adapter<ViewHolder> {
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_trend, parent, false);
final ItemHolder vh = new ItemHolder(v);
AppStyles.setTheme(settings, v);
final ItemHolder vh = new ItemHolder(v, settings);
v.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
@ -105,15 +103,15 @@ public class TrendAdapter extends Adapter<ViewHolder> {
public void onBindViewHolder(@NonNull ViewHolder vh, int index) {
ItemHolder holder = (ItemHolder) vh;
Trend trend = trends.get(index);
holder.pos.setText(trend.getRankStr());
holder.name.setText(trend.getName());
holder.textViews[0].setText(trend.getRankStr());
holder.textViews[1].setText(trend.getName());
if (trend.hasRangeInfo()) {
Resources resources = holder.vol.getContext().getResources();
Resources resources = holder.textViews[2].getContext().getResources();
String trendVol = formatter.format(trend.getRange()) + " " + resources.getString(R.string.trend_range);
holder.vol.setText(trendVol);
holder.vol.setVisibility(VISIBLE);
holder.textViews[2].setText(trendVol);
holder.textViews[2].setVisibility(VISIBLE);
} else {
holder.vol.setVisibility(GONE);
holder.textViews[2].setVisibility(GONE);
}
}
@ -121,13 +119,20 @@ public class TrendAdapter extends Adapter<ViewHolder> {
* view holder class for an item view
*/
private final class ItemHolder extends ViewHolder {
final TextView name, pos, vol;
final TextView[] textViews = new TextView[3];
ItemHolder(View v) {
ItemHolder(View v, GlobalSettings settings) {
super(v);
pos = v.findViewById(R.id.trendpos);
name = v.findViewById(R.id.trendname);
vol = v.findViewById(R.id.trendvol);
CardView background = (CardView) v;
textViews[0] = v.findViewById(R.id.trendpos);
textViews[1] = v.findViewById(R.id.trendname);
textViews[2] = v.findViewById(R.id.trendvol);
background.setCardBackgroundColor(settings.getCardColor());
for (TextView tv : textViews) {
tv.setTextColor(settings.getFontColor());
tv.setTypeface(settings.getFontFace());
}
}
}

View File

@ -3,6 +3,7 @@ package org.nuclearfog.twidda.adapter;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Color;
import android.graphics.PorterDuffColorFilter;
import android.graphics.drawable.Drawable;
import android.text.Spanned;
import android.view.LayoutInflater;
@ -17,6 +18,7 @@ import android.widget.TextView;
import androidx.annotation.MainThread;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.cardview.widget.CardView;
import androidx.recyclerview.widget.RecyclerView.Adapter;
import androidx.recyclerview.widget.RecyclerView.ViewHolder;
@ -26,7 +28,6 @@ import org.nuclearfog.tag.Tagger;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.items.Tweet;
import org.nuclearfog.twidda.backend.items.User;
import org.nuclearfog.twidda.backend.utils.AppStyles;
import org.nuclearfog.twidda.database.GlobalSettings;
import java.text.NumberFormat;
@ -221,9 +222,7 @@ public class TweetAdapter extends Adapter<ViewHolder> {
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
if (viewType == VIEW_TWEET) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_tweet, parent, false);
final TweetHolder vh = new TweetHolder(v);
vh.retweeterName.setCompoundDrawablesWithIntrinsicBounds(R.drawable.retweet, 0, 0, 0);
AppStyles.setTheme(settings, v);
final TweetHolder vh = new TweetHolder(v, settings);
v.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
@ -237,8 +236,7 @@ public class TweetAdapter extends Adapter<ViewHolder> {
return vh;
} else {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_placeholder, parent, false);
final PlaceHolder vh = new PlaceHolder(v);
AppStyles.setTheme(settings, v);
final PlaceHolder vh = new PlaceHolder(v, settings);
vh.loadBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
@ -273,40 +271,40 @@ public class TweetAdapter extends Adapter<ViewHolder> {
TweetHolder vh = (TweetHolder) holder;
User user = tweet.getUser();
if (tweet.getEmbeddedTweet() != null) {
vh.retweeterName.setText(user.getScreenname());
vh.retweeterName.setVisibility(VISIBLE);
vh.textViews[5].setText(user.getScreenname());
vh.textViews[5].setVisibility(VISIBLE);
tweet = tweet.getEmbeddedTweet();
user = tweet.getUser();
} else {
vh.retweeterName.setVisibility(INVISIBLE);
vh.textViews[5].setVisibility(INVISIBLE);
}
Spanned text = Tagger.makeTextWithLinks(tweet.getTweet(), settings.getHighlightColor());
vh.tweet.setText(text);
vh.username.setText(user.getUsername());
vh.screenname.setText(user.getScreenname());
vh.retweetCount.setText(formatter.format(tweet.getRetweetCount()));
vh.favoriteCount.setText(formatter.format(tweet.getFavorCount()));
vh.time.setText(getTimeString(tweet.getTime()));
vh.textViews[2].setText(text);
vh.textViews[0].setText(user.getUsername());
vh.textViews[1].setText(user.getScreenname());
vh.textViews[3].setText(formatter.format(tweet.getRetweetCount()));
vh.textViews[4].setText(formatter.format(tweet.getFavorCount()));
vh.textViews[6].setText(getTimeString(tweet.getTime()));
if (tweet.retweeted()) {
setIcon(vh.retweetCount, icons[3]);
setIcon(vh.textViews[3], icons[3]);
} else {
setIcon(vh.retweetCount, icons[2]);
setIcon(vh.textViews[3], icons[2]);
}
if (tweet.favored()) {
setIcon(vh.favoriteCount, icons[5]);
setIcon(vh.textViews[4], icons[5]);
} else {
setIcon(vh.favoriteCount, icons[4]);
setIcon(vh.textViews[4], icons[4]);
}
if (user.isVerified()) {
setIcon(vh.username, icons[0]);
setIcon(vh.textViews[0], icons[0]);
} else {
setIcon(vh.username, null);
setIcon(vh.textViews[0], null);
}
if (user.isLocked()) {
setIcon(vh.screenname, icons[1]);
setIcon(vh.textViews[1], icons[1]);
} else {
setIcon(vh.screenname, null);
setIcon(vh.textViews[1], null);
}
if (settings.getImageLoad() && user.hasProfileImage()) {
String pbLink = user.getImageLink();
@ -356,20 +354,27 @@ public class TweetAdapter extends Adapter<ViewHolder> {
* Holder class for the tweet view
*/
private final class TweetHolder extends ViewHolder {
final TextView username, screenname, tweet, retweetCount;
final TextView favoriteCount, retweeterName, time;
final TextView[] textViews = new TextView[7];
final ImageView profile;
TweetHolder(@NonNull View v) {
TweetHolder(@NonNull View v, GlobalSettings settings) {
super(v);
username = v.findViewById(R.id.username);
screenname = v.findViewById(R.id.screenname);
tweet = v.findViewById(R.id.tweettext);
retweetCount = v.findViewById(R.id.retweet_number);
favoriteCount = v.findViewById(R.id.favorite_number);
retweeterName = v.findViewById(R.id.retweeter);
time = v.findViewById(R.id.time);
CardView background = (CardView) v;
profile = v.findViewById(R.id.tweetPb);
textViews[0] = v.findViewById(R.id.username);
textViews[1] = v.findViewById(R.id.screenname);
textViews[2] = v.findViewById(R.id.tweettext);
textViews[3] = v.findViewById(R.id.retweet_number);
textViews[4] = v.findViewById(R.id.favorite_number);
textViews[5] = v.findViewById(R.id.retweeter);
textViews[6] = v.findViewById(R.id.time);
for (TextView tv : textViews) {
tv.setTextColor(settings.getFontColor());
tv.setTypeface(settings.getFontFace());
}
background.setBackgroundColor(settings.getCardColor());
textViews[5].setCompoundDrawablesWithIntrinsicBounds(icons[2], null, null, null);
}
}
@ -380,10 +385,14 @@ public class TweetAdapter extends Adapter<ViewHolder> {
final Button loadBtn;
final ProgressBar loadCircle;
PlaceHolder(@NonNull View v) {
PlaceHolder(@NonNull View v, GlobalSettings settings) {
super(v);
CardView background = (CardView) v;
loadBtn = v.findViewById(R.id.placeholder_button);
loadCircle = v.findViewById(R.id.placeholder_loading);
background.setCardBackgroundColor(settings.getCardColor());
loadCircle.getIndeterminateDrawable().mutate().setColorFilter(new PorterDuffColorFilter(settings.getHighlightColor(), SRC_ATOP));
}
}

View File

@ -2,6 +2,7 @@ package org.nuclearfog.twidda.adapter;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.PorterDuffColorFilter;
import android.graphics.drawable.Drawable;
import android.view.LayoutInflater;
import android.view.View;
@ -16,6 +17,7 @@ import android.widget.TextView;
import androidx.annotation.MainThread;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.cardview.widget.CardView;
import androidx.recyclerview.widget.RecyclerView.Adapter;
import androidx.recyclerview.widget.RecyclerView.ViewHolder;
@ -24,7 +26,6 @@ import com.squareup.picasso.Picasso;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.holder.TwitterUserList;
import org.nuclearfog.twidda.backend.items.User;
import org.nuclearfog.twidda.backend.utils.AppStyles;
import org.nuclearfog.twidda.database.GlobalSettings;
import java.text.NumberFormat;
@ -147,10 +148,7 @@ public class UserAdapter extends Adapter<ViewHolder> {
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
if (viewType == ITEM_USER) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_user, parent, false);
final ItemHolder vh = new ItemHolder(v);
AppStyles.setTheme(settings, v);
setIcon(vh.following, icons[2]);
setIcon(vh.follower, icons[3]);
final ItemHolder vh = new ItemHolder(v, settings);
v.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
@ -179,8 +177,7 @@ public class UserAdapter extends Adapter<ViewHolder> {
return vh;
} else {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_placeholder, parent, false);
final PlaceHolder vh = new PlaceHolder(v);
AppStyles.setTheme(settings, v);
final PlaceHolder vh = new PlaceHolder(v, settings);
vh.loadBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
@ -203,19 +200,19 @@ public class UserAdapter extends Adapter<ViewHolder> {
User user = items.get(index);
if (holder instanceof ItemHolder && user != null) {
ItemHolder vh = (ItemHolder) holder;
vh.username.setText(user.getUsername());
vh.screenname.setText(user.getScreenname());
vh.following.setText(formatter.format(user.getFollowing()));
vh.follower.setText(formatter.format(user.getFollower()));
vh.textViews[0].setText(user.getUsername());
vh.textViews[1].setText(user.getScreenname());
vh.textViews[2].setText(formatter.format(user.getFollowing()));
vh.textViews[3].setText(formatter.format(user.getFollower()));
if (user.isVerified()) {
setIcon(vh.username, icons[0]);
setIcon(vh.textViews[0], icons[0]);
} else {
setIcon(vh.username, null);
setIcon(vh.textViews[0], null);
}
if (user.isLocked()) {
setIcon(vh.screenname, icons[1]);
setIcon(vh.textViews[1], icons[1]);
} else {
setIcon(vh.screenname, null);
setIcon(vh.textViews[1], null);
}
if (settings.getImageLoad() && user.hasProfileImage()) {
String pbLink = user.getImageLink();
@ -280,18 +277,28 @@ public class UserAdapter extends Adapter<ViewHolder> {
* Holder for an user view item
*/
private final class ItemHolder extends ViewHolder {
final TextView[] textViews = new TextView[4];
final ImageView profileImg;
final TextView username, screenname, following, follower;
final ImageButton delete;
ItemHolder(View v) {
ItemHolder(View v, GlobalSettings settings) {
super(v);
username = v.findViewById(R.id.username_detail);
screenname = v.findViewById(R.id.screenname_detail);
CardView background = (CardView) v;
textViews[0] = v.findViewById(R.id.username_detail);
textViews[1] = v.findViewById(R.id.screenname_detail);
textViews[2] = v.findViewById(R.id.item_user_friends);
textViews[3] = v.findViewById(R.id.item_user_follower);
profileImg = v.findViewById(R.id.user_profileimg);
delete = v.findViewById(R.id.useritem_del_user);
following = v.findViewById(R.id.item_user_friends);
follower = v.findViewById(R.id.item_user_follower);
for (TextView tv : textViews) {
tv.setTextColor(settings.getFontColor());
tv.setTypeface(settings.getFontFace());
}
background.setCardBackgroundColor(settings.getCardColor());
textViews[2].setCompoundDrawablesWithIntrinsicBounds(icons[2], null, null, null);
textViews[3].setCompoundDrawablesWithIntrinsicBounds(icons[3], null, null, null);
}
}
@ -302,10 +309,14 @@ public class UserAdapter extends Adapter<ViewHolder> {
final ProgressBar loadCircle;
final Button loadBtn;
PlaceHolder(@NonNull View v) {
PlaceHolder(@NonNull View v, GlobalSettings settings) {
super(v);
CardView background = (CardView) v;
loadCircle = v.findViewById(R.id.placeholder_loading);
loadBtn = v.findViewById(R.id.placeholder_button);
background.setCardBackgroundColor(settings.getCardColor());
loadCircle.getIndeterminateDrawable().mutate().setColorFilter(new PorterDuffColorFilter(settings.getHighlightColor(), SRC_ATOP));
}
}

View File

@ -7,6 +7,7 @@
android:orientation="vertical">
<ProgressBar
android:id="@+id/imageitem_progress"
style="?android:attr/progressBarStyle"
android:layout_width="@dimen/item_imageload_progress_size"
android:layout_height="@dimen/item_imageload_progress_size"