performance improvement, bug fix, cleanup

This commit is contained in:
NudeDude 2019-06-22 18:25:16 +02:00
parent a53d083f5c
commit eafd93537c
14 changed files with 162 additions and 216 deletions

View File

@ -9,7 +9,7 @@ android {
minSdkVersion 16
targetSdkVersion 28
versionCode 1
versionName '1.5.1'
versionName '1.5.2'
vectorDrawables.useSupportLibrary true
}

View File

@ -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);
}
}

View File

@ -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);
}
});
}

View File

@ -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;

View File

@ -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());

View File

@ -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();

View File

@ -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";
}
}

View File

@ -52,7 +52,6 @@ public class MessageListFragment extends Fragment implements OnRefreshListener,
list.setLayoutManager(new LinearLayoutManager(getContext()));
list.setHasFixedSize(true);
list.setAdapter(adapter);
return v;
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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" />

View File

@ -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>