performance improvement, bug fix, cleanup
This commit is contained in:
parent
a53d083f5c
commit
eafd93537c
|
@ -9,7 +9,7 @@ android {
|
|||
minSdkVersion 16
|
||||
targetSdkVersion 28
|
||||
versionCode 1
|
||||
versionName '1.5.1'
|
||||
versionName '1.5.2'
|
||||
vectorDrawables.useSupportLibrary true
|
||||
}
|
||||
|
||||
|
|
|
@ -6,11 +6,11 @@ import android.text.method.LinkMovementMethod;
|
|||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Button;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import androidx.recyclerview.widget.RecyclerView.Adapter;
|
||||
import androidx.recyclerview.widget.RecyclerView.ViewHolder;
|
||||
|
||||
|
@ -19,19 +19,18 @@ import com.squareup.picasso.Picasso;
|
|||
import org.nuclearfog.tag.Tagger;
|
||||
import org.nuclearfog.tag.Tagger.OnTagClickListener;
|
||||
import org.nuclearfog.twidda.R;
|
||||
import org.nuclearfog.twidda.backend.helper.TimeFormat;
|
||||
import org.nuclearfog.twidda.backend.items.Message;
|
||||
import org.nuclearfog.twidda.backend.items.TwitterUser;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class MessageAdapter extends Adapter<MessageAdapter.MessageHolder> {
|
||||
|
||||
private WeakReference<OnItemSelected> itemClickListener;
|
||||
private Message[] messages;
|
||||
private List<Message> messages;
|
||||
private int highlight;
|
||||
private int fontColor;
|
||||
private boolean loadImage;
|
||||
|
@ -39,19 +38,21 @@ public class MessageAdapter extends Adapter<MessageAdapter.MessageHolder> {
|
|||
|
||||
public MessageAdapter(OnItemSelected l) {
|
||||
itemClickListener = new WeakReference<>(l);
|
||||
messages = new Message[0];
|
||||
messages = new ArrayList<>();
|
||||
fontColor = Color.WHITE;
|
||||
loadImage = true;
|
||||
}
|
||||
|
||||
|
||||
public Message getData(int pos) {
|
||||
return messages[pos];
|
||||
public Message getData(int index) {
|
||||
return messages.get(index);
|
||||
}
|
||||
|
||||
|
||||
public void setData(@NonNull List<Message> messageList) {
|
||||
messages = messageList.toArray(new Message[0]);
|
||||
messages.clear();
|
||||
messages.addAll(messageList);
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
|
||||
|
@ -67,14 +68,14 @@ public class MessageAdapter extends Adapter<MessageAdapter.MessageHolder> {
|
|||
|
||||
|
||||
@Override
|
||||
public long getItemId(int pos) {
|
||||
return messages[pos].getId();
|
||||
public long getItemId(int index) {
|
||||
return messages.get(index).getId();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return messages.length;
|
||||
return messages.size();
|
||||
}
|
||||
|
||||
|
||||
|
@ -82,60 +83,51 @@ public class MessageAdapter extends Adapter<MessageAdapter.MessageHolder> {
|
|||
@Override
|
||||
public MessageHolder onCreateViewHolder(@NonNull final ViewGroup parent, int viewType) {
|
||||
LayoutInflater inf = LayoutInflater.from(parent.getContext());
|
||||
final View view = inf.inflate(R.layout.item_dm, parent, false);
|
||||
view.findViewById(R.id.dm_answer).setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
RecyclerView rv = (RecyclerView) parent;
|
||||
int position = rv.getChildLayoutPosition(view);
|
||||
if (itemClickListener.get() != null)
|
||||
itemClickListener.get().onClick(messages[position], OnItemSelected.Action.ANSWER);
|
||||
}
|
||||
});
|
||||
view.findViewById(R.id.dm_delete).setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
RecyclerView rv = (RecyclerView) parent;
|
||||
int position = rv.getChildLayoutPosition(view);
|
||||
if (itemClickListener.get() != null)
|
||||
itemClickListener.get().onClick(messages[position], OnItemSelected.Action.DELETE);
|
||||
}
|
||||
});
|
||||
view.findViewById(R.id.dm_profileImg).setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
RecyclerView rv = (RecyclerView) parent;
|
||||
int position = rv.getChildLayoutPosition(view);
|
||||
if (itemClickListener.get() != null)
|
||||
itemClickListener.get().onClick(messages[position], OnItemSelected.Action.PROFILE);
|
||||
}
|
||||
});
|
||||
View view = inf.inflate(R.layout.item_dm, parent, false);
|
||||
return new MessageHolder(view);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull MessageHolder vh, int index) {
|
||||
public void onBindViewHolder(@NonNull MessageHolder vh, final int index) {
|
||||
Spanned text;
|
||||
Message message = messages[index];
|
||||
Message message = messages.get(index);
|
||||
TwitterUser user = message.getSender();
|
||||
if (itemClickListener.get() != null)
|
||||
text = Tagger.makeText(message.getText(), highlight, itemClickListener.get());
|
||||
else
|
||||
text = Tagger.makeText(message.getText(), highlight);
|
||||
|
||||
vh.message.setText(text);
|
||||
vh.message.setMovementMethod(LinkMovementMethod.getInstance());
|
||||
vh.message.setLinkTextColor(highlight);
|
||||
vh.username.setText(user.getUsername());
|
||||
vh.screenname.setText(user.getScreenname());
|
||||
vh.createdAt.setText(stringTime(message.getTime()));
|
||||
|
||||
vh.createdAt.setText(TimeFormat.getString(message.getTime()));
|
||||
vh.message.setTextColor(fontColor);
|
||||
vh.username.setTextColor(fontColor);
|
||||
vh.screenname.setTextColor(fontColor);
|
||||
vh.createdAt.setTextColor(fontColor);
|
||||
|
||||
vh.answer.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (itemClickListener.get() != null)
|
||||
itemClickListener.get().onClick(messages.get(index), OnItemSelected.Action.ANSWER);
|
||||
}
|
||||
});
|
||||
vh.delete.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (itemClickListener.get() != null)
|
||||
itemClickListener.get().onClick(messages.get(index), OnItemSelected.Action.DELETE);
|
||||
}
|
||||
});
|
||||
vh.profile_img.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (itemClickListener.get() != null)
|
||||
itemClickListener.get().onClick(messages.get(index), OnItemSelected.Action.PROFILE);
|
||||
}
|
||||
});
|
||||
if (user.isVerified())
|
||||
vh.username.setCompoundDrawablesWithIntrinsicBounds(R.drawable.verify, 0, 0, 0);
|
||||
else
|
||||
|
@ -144,7 +136,6 @@ public class MessageAdapter extends Adapter<MessageAdapter.MessageHolder> {
|
|||
vh.screenname.setCompoundDrawablesWithIntrinsicBounds(R.drawable.lock, 0, 0, 0);
|
||||
else
|
||||
vh.screenname.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
|
||||
|
||||
if (loadImage) {
|
||||
String link = message.getSender().getImageLink() + "_mini";
|
||||
Picasso.get().load(link).into(vh.profile_img);
|
||||
|
@ -152,37 +143,14 @@ public class MessageAdapter extends Adapter<MessageAdapter.MessageHolder> {
|
|||
}
|
||||
|
||||
|
||||
private String stringTime(long mills) {
|
||||
Calendar now = Calendar.getInstance();
|
||||
long diff = now.getTimeInMillis() - mills;
|
||||
long seconds = diff / 1000;
|
||||
long minutes = seconds / 60;
|
||||
long hours = minutes / 60;
|
||||
long days = hours / 24;
|
||||
long weeks = days / 7;
|
||||
if (weeks > 4) {
|
||||
Date tweetDate = new Date(mills);
|
||||
return SimpleDateFormat.getDateInstance().format(tweetDate);
|
||||
}
|
||||
if (weeks > 0)
|
||||
return weeks + " w";
|
||||
if (days > 0)
|
||||
return days + " d";
|
||||
if (hours > 0)
|
||||
return hours + " h";
|
||||
if (minutes > 0)
|
||||
return minutes + " m";
|
||||
else
|
||||
return seconds + " s";
|
||||
}
|
||||
|
||||
|
||||
class MessageHolder extends ViewHolder {
|
||||
final ImageView profile_img;
|
||||
final TextView username;
|
||||
final TextView screenname;
|
||||
final TextView createdAt;
|
||||
final TextView message;
|
||||
final Button answer;
|
||||
final Button delete;
|
||||
|
||||
MessageHolder(View v) {
|
||||
super(v);
|
||||
|
@ -191,6 +159,8 @@ public class MessageAdapter extends Adapter<MessageAdapter.MessageHolder> {
|
|||
screenname = v.findViewById(R.id.dm_screenname);
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -8,7 +8,6 @@ import android.view.ViewGroup;
|
|||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import androidx.recyclerview.widget.RecyclerView.Adapter;
|
||||
import androidx.recyclerview.widget.RecyclerView.ViewHolder;
|
||||
|
||||
|
@ -16,19 +15,20 @@ import org.nuclearfog.twidda.R;
|
|||
import org.nuclearfog.twidda.backend.items.Trend;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class TrendAdapter extends Adapter<TrendAdapter.ItemHolder> {
|
||||
|
||||
|
||||
private WeakReference<OnItemClickListener> itemClickListener;
|
||||
private Trend[] trends;
|
||||
private List<Trend> trends;
|
||||
private int font_color;
|
||||
|
||||
|
||||
public TrendAdapter(OnItemClickListener l) {
|
||||
itemClickListener = new WeakReference<>(l);
|
||||
trends = new Trend[0];
|
||||
trends = new ArrayList<>();
|
||||
font_color = Color.WHITE;
|
||||
}
|
||||
|
||||
|
@ -38,30 +38,32 @@ public class TrendAdapter extends Adapter<TrendAdapter.ItemHolder> {
|
|||
}
|
||||
|
||||
|
||||
public Trend getData(int pos) {
|
||||
return trends[pos];
|
||||
public Trend getData(int index) {
|
||||
return trends.get(index);
|
||||
}
|
||||
|
||||
|
||||
public void setData(@NonNull List<Trend> trendList) {
|
||||
trends = trendList.toArray(new Trend[0]);
|
||||
trends.clear();
|
||||
trends.addAll(trendList);
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
|
||||
public void clear() {
|
||||
trends = new Trend[0];
|
||||
trends.clear();
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
|
||||
public boolean isEmpty() {
|
||||
return trends.length == 0;
|
||||
return trends.isEmpty();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return trends.length;
|
||||
return trends.size();
|
||||
}
|
||||
|
||||
|
||||
|
@ -69,27 +71,25 @@ public class TrendAdapter extends Adapter<TrendAdapter.ItemHolder> {
|
|||
@Override
|
||||
public ItemHolder onCreateViewHolder(@NonNull final ViewGroup parent, int viewType) {
|
||||
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_trend, parent, false);
|
||||
v.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
RecyclerView rv = (RecyclerView) parent;
|
||||
int position = rv.getChildLayoutPosition(v);
|
||||
if (itemClickListener.get() != null)
|
||||
itemClickListener.get().onItemClick(position);
|
||||
}
|
||||
});
|
||||
return new ItemHolder(v);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull ItemHolder vh, int index) {
|
||||
Trend trend = trends[index];
|
||||
public void onBindViewHolder(@NonNull ItemHolder vh, final int index) {
|
||||
Trend trend = trends.get(index);
|
||||
String posStr = trend.getPosition();
|
||||
vh.trends.setText(trend.getName());
|
||||
vh.trends.setTextColor(font_color);
|
||||
vh.pos.setText(posStr);
|
||||
vh.pos.setTextColor(font_color);
|
||||
vh.itemView.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (itemClickListener.get() != null)
|
||||
itemClickListener.get().onItemClick(index);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -10,7 +10,6 @@ import android.widget.ImageView;
|
|||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import androidx.recyclerview.widget.RecyclerView.Adapter;
|
||||
import androidx.recyclerview.widget.RecyclerView.ViewHolder;
|
||||
|
||||
|
@ -18,20 +17,18 @@ import com.squareup.picasso.Picasso;
|
|||
|
||||
import org.nuclearfog.tag.Tagger;
|
||||
import org.nuclearfog.twidda.R;
|
||||
import org.nuclearfog.twidda.backend.helper.TimeFormat;
|
||||
import org.nuclearfog.twidda.backend.items.Tweet;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.text.NumberFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.LinkedList;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class TweetAdapter extends Adapter<TweetAdapter.ItemHolder> {
|
||||
|
||||
private WeakReference<OnItemClickListener> itemClickListener;
|
||||
private Tweet[] tweets;
|
||||
private List<Tweet> tweets;
|
||||
|
||||
private NumberFormat formatter;
|
||||
private int highlight;
|
||||
|
@ -42,7 +39,7 @@ public class TweetAdapter extends Adapter<TweetAdapter.ItemHolder> {
|
|||
public TweetAdapter(OnItemClickListener l) {
|
||||
itemClickListener = new WeakReference<>(l);
|
||||
formatter = NumberFormat.getIntegerInstance();
|
||||
tweets = new Tweet[0];
|
||||
tweets = new ArrayList<>();
|
||||
highlight = Color.WHITE;
|
||||
font_color = Color.WHITE;
|
||||
image_load = true;
|
||||
|
@ -60,44 +57,39 @@ public class TweetAdapter extends Adapter<TweetAdapter.ItemHolder> {
|
|||
}
|
||||
|
||||
|
||||
public Tweet getData(int pos) {
|
||||
return tweets[pos];
|
||||
}
|
||||
|
||||
|
||||
public List<Tweet> getData() {
|
||||
List<Tweet> data = new LinkedList<>();
|
||||
for (Tweet tweet : tweets)
|
||||
data.add(tweet);
|
||||
return data;
|
||||
public Tweet getData(int index) {
|
||||
return tweets.get(index);
|
||||
}
|
||||
|
||||
|
||||
public void setData(@NonNull List<Tweet> newTweets) {
|
||||
tweets = newTweets.toArray(new Tweet[0]);
|
||||
if (!newTweets.isEmpty()) {
|
||||
tweets.addAll(0, newTweets);
|
||||
notifyItemInserted(0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void clear() {
|
||||
tweets = new Tweet[0];
|
||||
tweets.clear();
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
|
||||
public boolean isEmpty() {
|
||||
return tweets.length == 0;
|
||||
return tweets.isEmpty();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public long getItemId(int pos) {
|
||||
return tweets[pos].getId();
|
||||
public long getItemId(int index) {
|
||||
return tweets.get(index).getId();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return tweets.length;
|
||||
return tweets.size();
|
||||
}
|
||||
|
||||
|
||||
|
@ -105,22 +97,14 @@ public class TweetAdapter extends Adapter<TweetAdapter.ItemHolder> {
|
|||
@Override
|
||||
public ItemHolder onCreateViewHolder(@NonNull final ViewGroup parent, int viewType) {
|
||||
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_tweet, parent, false);
|
||||
v.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
RecyclerView rv = (RecyclerView) parent;
|
||||
int position = rv.getChildLayoutPosition(v);
|
||||
if (itemClickListener.get() != null)
|
||||
itemClickListener.get().onItemClick(position);
|
||||
}
|
||||
});
|
||||
return new ItemHolder(v);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull ItemHolder vh, int index) {
|
||||
Tweet tweet = tweets[index];
|
||||
public void onBindViewHolder(@NonNull ItemHolder vh, final int index) {
|
||||
Tweet tweet = tweets.get(index);
|
||||
Spanned text = Tagger.makeText(tweet.getTweet(), highlight);
|
||||
if (tweet.getEmbeddedTweet() != null) {
|
||||
String retweeter = "RT " + tweet.getUser().getScreenname();
|
||||
vh.retweeter.setText(retweeter);
|
||||
|
@ -128,19 +112,23 @@ public class TweetAdapter extends Adapter<TweetAdapter.ItemHolder> {
|
|||
} else {
|
||||
vh.retweeter.setText("");
|
||||
}
|
||||
Spanned text = Tagger.makeText(tweet.getTweet(), highlight);
|
||||
vh.username.setText(tweet.getUser().getUsername());
|
||||
vh.screenname.setText(tweet.getUser().getScreenname());
|
||||
vh.tweet.setText(text);
|
||||
vh.retweet.setText(formatter.format(tweet.getRetweetCount()));
|
||||
vh.favorite.setText(formatter.format(tweet.getFavorCount()));
|
||||
vh.time.setText(stringTime(tweet.getTime()));
|
||||
|
||||
vh.time.setText(TimeFormat.getString(tweet.getTime()));
|
||||
vh.username.setTextColor(font_color);
|
||||
vh.screenname.setTextColor(font_color);
|
||||
vh.tweet.setTextColor(font_color);
|
||||
vh.time.setTextColor(font_color);
|
||||
|
||||
vh.itemView.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (itemClickListener.get() != null)
|
||||
itemClickListener.get().onItemClick(index);
|
||||
}
|
||||
});
|
||||
if (tweet.retweeted())
|
||||
vh.retweet.setCompoundDrawablesWithIntrinsicBounds(R.drawable.retweet_enabled, 0, 0, 0);
|
||||
else
|
||||
|
@ -162,30 +150,6 @@ public class TweetAdapter extends Adapter<TweetAdapter.ItemHolder> {
|
|||
}
|
||||
|
||||
|
||||
private String stringTime(long mills) {
|
||||
Calendar now = Calendar.getInstance();
|
||||
long diff = now.getTimeInMillis() - mills;
|
||||
long seconds = diff / 1000;
|
||||
long minutes = seconds / 60;
|
||||
long hours = minutes / 60;
|
||||
long days = hours / 24;
|
||||
long weeks = days / 7;
|
||||
if (weeks > 4) {
|
||||
Date tweetDate = new Date(mills);
|
||||
return SimpleDateFormat.getDateInstance().format(tweetDate);
|
||||
}
|
||||
if (weeks > 0)
|
||||
return weeks + " w";
|
||||
if (days > 0)
|
||||
return days + " d";
|
||||
if (hours > 0)
|
||||
return hours + " h";
|
||||
if (minutes > 0)
|
||||
return minutes + " m";
|
||||
return seconds + " s";
|
||||
}
|
||||
|
||||
|
||||
class ItemHolder extends ViewHolder {
|
||||
final TextView username, screenname, tweet, retweet;
|
||||
final TextView favorite, retweeter, time;
|
||||
|
|
|
@ -19,31 +19,34 @@ import org.nuclearfog.twidda.R;
|
|||
import org.nuclearfog.twidda.backend.items.TwitterUser;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class UserAdapter extends Adapter<UserAdapter.ItemHolder> {
|
||||
|
||||
private WeakReference<OnItemClickListener> itemClickListener;
|
||||
private TwitterUser mUser[];
|
||||
private List<TwitterUser> users;
|
||||
private int font_color;
|
||||
private boolean loadImage;
|
||||
|
||||
|
||||
public UserAdapter(OnItemClickListener l) {
|
||||
itemClickListener = new WeakReference<>(l);
|
||||
mUser = new TwitterUser[0];
|
||||
users = new ArrayList<>();
|
||||
font_color = Color.WHITE;
|
||||
loadImage = true;
|
||||
}
|
||||
|
||||
|
||||
public TwitterUser getData(int pos) {
|
||||
return mUser[pos];
|
||||
public TwitterUser getData(int index) {
|
||||
return users.get(index);
|
||||
}
|
||||
|
||||
|
||||
public void setData(@NonNull List<TwitterUser> userList) {
|
||||
mUser = userList.toArray(new TwitterUser[0]);
|
||||
users.clear();
|
||||
users.addAll(userList);
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
|
||||
|
@ -59,13 +62,13 @@ public class UserAdapter extends Adapter<UserAdapter.ItemHolder> {
|
|||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return mUser.length;
|
||||
return users.size();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public long getItemId(int pos) {
|
||||
return mUser[pos].getId();
|
||||
public long getItemId(int index) {
|
||||
return users.get(index).getId();
|
||||
}
|
||||
|
||||
|
||||
|
@ -88,7 +91,7 @@ public class UserAdapter extends Adapter<UserAdapter.ItemHolder> {
|
|||
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull ItemHolder vh, int index) {
|
||||
TwitterUser user = mUser[index];
|
||||
TwitterUser user = users.get(index);
|
||||
vh.username.setText(user.getUsername());
|
||||
vh.username.setTextColor(font_color);
|
||||
vh.screenname.setText(user.getScreenname());
|
||||
|
|
|
@ -8,6 +8,7 @@ import android.widget.ProgressBar;
|
|||
import android.widget.Toast;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import org.nuclearfog.twidda.R;
|
||||
|
@ -41,10 +42,9 @@ public class ImageLoader extends AsyncTask<String, Void, Bitmap[]> {
|
|||
|
||||
@Override
|
||||
protected Bitmap[] doInBackground(String[] links) {
|
||||
Bitmap[] images = new Bitmap[0];
|
||||
try {
|
||||
int i = 0;
|
||||
images = new Bitmap[links.length];
|
||||
Bitmap[] images = new Bitmap[links.length];
|
||||
for (String link : links) {
|
||||
switch (mode) {
|
||||
case ONLINE:
|
||||
|
@ -58,20 +58,20 @@ public class ImageLoader extends AsyncTask<String, Void, Bitmap[]> {
|
|||
break;
|
||||
}
|
||||
}
|
||||
return images;
|
||||
} catch (Exception err) {
|
||||
err.printStackTrace();
|
||||
}
|
||||
return images;
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(Bitmap[] images) {
|
||||
protected void onPostExecute(@Nullable Bitmap[] images) {
|
||||
if (ui.get() != null) {
|
||||
ProgressBar progress = ui.get().findViewById(R.id.image_load);
|
||||
progress.setVisibility(View.INVISIBLE);
|
||||
|
||||
if (images.length > 0 && images[0] != null) {
|
||||
if (images != null && images.length > 0) {
|
||||
ui.get().setImage(images[0]);
|
||||
imageAdapter.setImages(images);
|
||||
imageAdapter.notifyDataSetChanged();
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
package org.nuclearfog.twidda.backend.helper;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
|
||||
public abstract class TimeFormat {
|
||||
|
||||
public static String getString(long time) {
|
||||
long diff = new Date().getTime() - time;
|
||||
long seconds = diff / 1000;
|
||||
long minutes = seconds / 60;
|
||||
long hours = minutes / 60;
|
||||
long days = hours / 24;
|
||||
long weeks = days / 7;
|
||||
if (weeks > 4) {
|
||||
Date tweetDate = new Date(time);
|
||||
return SimpleDateFormat.getDateInstance().format(tweetDate);
|
||||
}
|
||||
if (weeks > 0)
|
||||
return weeks + " w";
|
||||
if (days > 0)
|
||||
return days + " d";
|
||||
if (hours > 0)
|
||||
return hours + " h";
|
||||
if (minutes > 0)
|
||||
return minutes + " m";
|
||||
return seconds + " s";
|
||||
}
|
||||
}
|
|
@ -52,7 +52,6 @@ public class MessageListFragment extends Fragment implements OnRefreshListener,
|
|||
list.setLayoutManager(new LinearLayoutManager(getContext()));
|
||||
list.setHasFixedSize(true);
|
||||
list.setAdapter(adapter);
|
||||
|
||||
return v;
|
||||
}
|
||||
|
||||
|
|
|
@ -102,10 +102,8 @@ public class MessageLoader extends AsyncTask<Long, Void, List<Message>> {
|
|||
@Override
|
||||
protected void onPostExecute(@Nullable List<Message> messages) {
|
||||
if (ui.get() != null) {
|
||||
if (messages != null) {
|
||||
if (messages != null)
|
||||
adapter.setData(messages);
|
||||
adapter.notifyDataSetChanged();
|
||||
}
|
||||
if (err != null)
|
||||
ErrorHandler.printError(ui.get().getContext(), err);
|
||||
SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
|
||||
|
@ -126,10 +124,8 @@ public class MessageLoader extends AsyncTask<Long, Void, List<Message>> {
|
|||
@Override
|
||||
protected void onCancelled(@Nullable List<Message> messages) {
|
||||
if (ui.get() != null) {
|
||||
if (messages != null) {
|
||||
if (messages != null)
|
||||
adapter.setData(messages);
|
||||
adapter.notifyDataSetChanged();
|
||||
}
|
||||
SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
|
||||
reload.setRefreshing(false);
|
||||
}
|
||||
|
|
|
@ -21,6 +21,8 @@ import java.util.List;
|
|||
|
||||
import twitter4j.TwitterException;
|
||||
|
||||
import static android.os.AsyncTask.Status.FINISHED;
|
||||
|
||||
|
||||
public class TrendLoader extends AsyncTask<Void, Void, List<Trend>> {
|
||||
|
||||
|
@ -51,7 +53,7 @@ public class TrendLoader extends AsyncTask<Void, Void, List<Trend>> {
|
|||
reload.postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (getStatus() != Status.FINISHED)
|
||||
if (getStatus() != FINISHED)
|
||||
reload.setRefreshing(true);
|
||||
}
|
||||
}, 500);
|
||||
|
@ -84,13 +86,10 @@ public class TrendLoader extends AsyncTask<Void, Void, List<Trend>> {
|
|||
@Override
|
||||
protected void onPostExecute(@Nullable List<Trend> trends) {
|
||||
if (ui.get() != null) {
|
||||
if (trends != null) {
|
||||
if (trends != null)
|
||||
adapter.setData(trends);
|
||||
adapter.notifyDataSetChanged();
|
||||
} else {
|
||||
if (err != null)
|
||||
ErrorHandler.printError(ui.get().getContext(), err);
|
||||
}
|
||||
else if (err != null)
|
||||
ErrorHandler.printError(ui.get().getContext(), err);
|
||||
SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
|
||||
reload.setRefreshing(false);
|
||||
}
|
||||
|
@ -109,10 +108,8 @@ public class TrendLoader extends AsyncTask<Void, Void, List<Trend>> {
|
|||
@Override
|
||||
protected void onCancelled(@Nullable List<Trend> trends) {
|
||||
if (ui.get() != null) {
|
||||
if (trends != null) {
|
||||
if (trends != null)
|
||||
adapter.setData(trends);
|
||||
adapter.notifyDataSetChanged();
|
||||
}
|
||||
SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
|
||||
reload.setRefreshing(false);
|
||||
}
|
||||
|
|
|
@ -84,7 +84,6 @@ public class TweetLoader extends AsyncTask<Object, Void, List<Tweet>> {
|
|||
sinceId = adapter.getItemId(0);
|
||||
tweets = mTwitter.getHome(1, sinceId);
|
||||
db.storeHomeTimeline(tweets);
|
||||
tweets.addAll(adapter.getData());
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -99,7 +98,6 @@ public class TweetLoader extends AsyncTask<Object, Void, List<Tweet>> {
|
|||
sinceId = adapter.getItemId(0);
|
||||
tweets = mTwitter.getMention(1, sinceId);
|
||||
db.storeMentions(tweets);
|
||||
tweets.addAll(adapter.getData());
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -115,7 +113,6 @@ public class TweetLoader extends AsyncTask<Object, Void, List<Tweet>> {
|
|||
sinceId = adapter.getItemId(0);
|
||||
tweets = mTwitter.getUserTweets(tweetId, sinceId, 1);
|
||||
db.storeUserTweets(tweets);
|
||||
tweets.addAll(adapter.getData());
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -131,7 +128,6 @@ public class TweetLoader extends AsyncTask<Object, Void, List<Tweet>> {
|
|||
sinceId = adapter.getItemId(0);
|
||||
tweets = mTwitter.getUserFavs(tweetId, sinceId, 1);
|
||||
db.storeUserFavs(tweets, tweetId);
|
||||
tweets.addAll(adapter.getData());
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -155,7 +151,6 @@ public class TweetLoader extends AsyncTask<Object, Void, List<Tweet>> {
|
|||
tweets = mTwitter.getAnswers(search, tweetId, sinceId);
|
||||
if (!tweets.isEmpty() && db.containStatus(tweetId))
|
||||
db.storeReplies(tweets);
|
||||
tweets.addAll(adapter.getData());
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -164,8 +159,6 @@ public class TweetLoader extends AsyncTask<Object, Void, List<Tweet>> {
|
|||
if (!adapter.isEmpty())
|
||||
sinceId = adapter.getItemId(0);
|
||||
tweets = mTwitter.searchTweets(search, sinceId);
|
||||
if (!adapter.isEmpty())
|
||||
tweets.addAll(adapter.getData());
|
||||
break;
|
||||
}
|
||||
} catch (TwitterException err) {
|
||||
|
@ -180,13 +173,10 @@ public class TweetLoader extends AsyncTask<Object, Void, List<Tweet>> {
|
|||
@Override
|
||||
protected void onPostExecute(@Nullable List<Tweet> tweets) {
|
||||
if (ui.get() != null) {
|
||||
if (tweets != null) {
|
||||
if (tweets != null)
|
||||
adapter.setData(tweets);
|
||||
adapter.notifyDataSetChanged();
|
||||
} else {
|
||||
if (err != null)
|
||||
ErrorHandler.printError(ui.get().getContext(), err);
|
||||
}
|
||||
else if (err != null)
|
||||
ErrorHandler.printError(ui.get().getContext(), err);
|
||||
SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
|
||||
reload.setRefreshing(false);
|
||||
}
|
||||
|
@ -205,10 +195,8 @@ public class TweetLoader extends AsyncTask<Object, Void, List<Tweet>> {
|
|||
@Override
|
||||
protected void onCancelled(@Nullable List<Tweet> tweets) {
|
||||
if (ui.get() != null) {
|
||||
if (tweets != null) {
|
||||
if (tweets != null)
|
||||
adapter.setData(tweets);
|
||||
adapter.notifyDataSetChanged();
|
||||
}
|
||||
SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
|
||||
reload.setRefreshing(false);
|
||||
}
|
||||
|
|
|
@ -98,13 +98,10 @@ public class UserLoader extends AsyncTask<Object, Void, List<TwitterUser>> {
|
|||
@Override
|
||||
protected void onPostExecute(@Nullable List<TwitterUser> users) {
|
||||
if (ui.get() != null) {
|
||||
if (users != null) {
|
||||
if (users != null)
|
||||
adapter.setData(users);
|
||||
adapter.notifyDataSetChanged();
|
||||
} else {
|
||||
if (err != null)
|
||||
ErrorHandler.printError(ui.get().getContext(), err);
|
||||
}
|
||||
else if (err != null)
|
||||
ErrorHandler.printError(ui.get().getContext(), err);
|
||||
SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
|
||||
reload.setRefreshing(false);
|
||||
}
|
||||
|
@ -123,10 +120,8 @@ public class UserLoader extends AsyncTask<Object, Void, List<TwitterUser>> {
|
|||
@Override
|
||||
protected void onCancelled(@Nullable List<TwitterUser> users) {
|
||||
if (ui.get() != null) {
|
||||
if (users != null) {
|
||||
if (users != null)
|
||||
adapter.setData(users);
|
||||
adapter.notifyDataSetChanged();
|
||||
}
|
||||
SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
|
||||
reload.setRefreshing(false);
|
||||
}
|
||||
|
|
|
@ -91,19 +91,23 @@
|
|||
android:layout_height="match_parent"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
<Button
|
||||
android:id="@+id/dm_answer"
|
||||
style="@style/Widget.AppCompat.Button.Borderless"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_height="@dimen/dm_item_button_height"
|
||||
android:layout_marginEnd="@dimen/padding_side"
|
||||
android:layout_marginRight="@dimen/padding_side"
|
||||
android:background="@drawable/button"
|
||||
android:text="@string/answer"
|
||||
android:textSize="@dimen/textsize_button" />
|
||||
|
||||
<TextView
|
||||
<Button
|
||||
android:id="@+id/dm_delete"
|
||||
style="@style/Widget.AppCompat.Button.Borderless"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_height="@dimen/dm_item_button_height"
|
||||
android:background="@drawable/button"
|
||||
android:text="@string/delete_dm"
|
||||
android:textSize="@dimen/textsize_button" />
|
||||
|
||||
|
|
|
@ -51,4 +51,5 @@
|
|||
<dimen name="button_media_height">36dp</dimen>
|
||||
<dimen name="button_media_width">64dp</dimen>
|
||||
<dimen name="preview_margin">10dp</dimen>
|
||||
<dimen name="dm_item_button_height">20dp</dimen>
|
||||
</resources>
|
Loading…
Reference in New Issue