optimized UI update

This commit is contained in:
nuclearfog 2019-10-19 18:08:27 +02:00
parent de56e7f9d4
commit 6f91f74c1e
No known key found for this signature in database
GPG Key ID: ED35E22099354A64
14 changed files with 211 additions and 218 deletions

10
.idea/statistic.xml Normal file
View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Statistic">
<option name="excludedDirectories">
<list>
<option value="$PROJECT_DIR$/app/build" />
</list>
</option>
</component>
</project>

View File

@ -43,11 +43,6 @@ public class ImageAdapter extends Adapter<ImageAdapter.ImageHolder> {
}
public Bitmap top() {
return images.get(0);
}
public void disableLoading() {
int circlePos = images.size();
loading = false;

View File

@ -3,12 +3,9 @@ package org.nuclearfog.twidda.backend;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.adapter.ImageAdapter;
@ -33,8 +30,7 @@ public class ImageLoader extends AsyncTask<String, Bitmap, Boolean> {
public ImageLoader(@NonNull MediaViewer context, Mode mode) {
ui = new WeakReference<>(context);
RecyclerView imageList = context.findViewById(R.id.image_list);
imageAdapter = (ImageAdapter) imageList.getAdapter();
imageAdapter = context.getAdapter();
this.mode = mode;
}
@ -71,12 +67,9 @@ public class ImageLoader extends AsyncTask<String, Bitmap, Boolean> {
protected void onProgressUpdate(Bitmap[] btm) {
Bitmap image = btm[0];
if (ui.get() != null && image != null) {
if (imageAdapter.getItemCount() == 2)
ui.get().disableProgressbar();
imageAdapter.addLast(btm[0]);
if (imageAdapter.getItemCount() == 2) {
ProgressBar progress = ui.get().findViewById(R.id.image_load);
progress.setVisibility(View.INVISIBLE);
ui.get().setImage(imageAdapter.top());
}
}
}

View File

@ -2,12 +2,9 @@ package org.nuclearfog.twidda.backend;
import android.os.AsyncTask;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.helper.ErrorHandler;
import org.nuclearfog.twidda.backend.items.TrendLocation;
import org.nuclearfog.twidda.database.GlobalSettings;
import org.nuclearfog.twidda.window.AppSettings;
import java.lang.ref.WeakReference;
@ -18,14 +15,12 @@ import twitter4j.TwitterException;
public class LocationLoader extends AsyncTask<Void, Void, List<TrendLocation>> {
private WeakReference<AppSettings> ui;
private GlobalSettings settings;
private TwitterEngine mTwitter;
private TwitterException err;
public LocationLoader(AppSettings context) {
ui = new WeakReference<>(context);
settings = GlobalSettings.getInstance(context);
mTwitter = TwitterEngine.getInstance(context);
}
@ -47,15 +42,11 @@ public class LocationLoader extends AsyncTask<Void, Void, List<TrendLocation>> {
protected void onPostExecute(List<TrendLocation> locations) {
if (ui.get() != null) {
if (locations != null && !locations.isEmpty()) {
Spinner woeId = ui.get().findViewById(R.id.woeid);
@SuppressWarnings("unchecked")
ArrayAdapter<TrendLocation> adapter = (ArrayAdapter<TrendLocation>) woeId.getAdapter();
ArrayAdapter<TrendLocation> adapter = ui.get().getAdapter();
adapter.clear();
adapter.addAll(locations);
adapter.notifyDataSetChanged();
int position = adapter.getPosition(settings.getTrendLocation());
woeId.setSelection(position);
ui.get().setWoeIdSelection();
} else if (err != null) {
ErrorHandler.printError(ui.get(), err);
}

View File

@ -24,6 +24,7 @@ import org.nuclearfog.twidda.window.MessagePopup;
import org.nuclearfog.twidda.window.SearchPage;
import org.nuclearfog.twidda.window.UserProfile;
import static android.os.AsyncTask.Status.FINISHED;
import static android.os.AsyncTask.Status.RUNNING;
import static org.nuclearfog.twidda.window.MessagePopup.KEY_DM_ADDITION;
import static org.nuclearfog.twidda.window.SearchPage.KEY_SEARCH;
@ -34,7 +35,7 @@ public class MessageListFragment extends Fragment implements OnRefreshListener,
private MessageLoader messageTask;
private SwipeRefreshLayout reload;
private View root;
private MessageAdapter adapter;
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup parent, Bundle param) {
@ -44,7 +45,7 @@ public class MessageListFragment extends Fragment implements OnRefreshListener,
reload = v.findViewById(R.id.fragment_reload);
reload.setOnRefreshListener(this);
MessageAdapter adapter = new MessageAdapter(this);
adapter = new MessageAdapter(this);
list.setLayoutManager(new LinearLayoutManager(getContext()));
list.setHasFixedSize(true);
list.setAdapter(adapter);
@ -58,13 +59,6 @@ public class MessageListFragment extends Fragment implements OnRefreshListener,
}
@Override
public void onViewCreated(@NonNull View v, Bundle param) {
super.onViewCreated(v, param);
root = v;
}
@Override
public void onStart() {
super.onStart();
@ -109,7 +103,7 @@ public class MessageListFragment extends Fragment implements OnRefreshListener,
break;
case DELETE:
messageTask = new MessageLoader(root, Mode.DEL);
messageTask = new MessageLoader(this, Mode.DEL);
messageTask.execute(message.getId());
break;
@ -123,8 +117,28 @@ public class MessageListFragment extends Fragment implements OnRefreshListener,
}
public MessageAdapter getAdapter() {
return adapter;
}
public void setRefresh(boolean enable) {
if (enable) {
reload.postDelayed(new Runnable() {
@Override
public void run() {
if (messageTask.getStatus() != FINISHED)
reload.setRefreshing(true);
}
}, 500);
} else {
reload.setRefreshing(false);
}
}
private void load(Mode m) {
messageTask = new MessageLoader(root, m);
messageTask = new MessageLoader(this, m);
messageTask.execute();
}
}

View File

@ -21,6 +21,7 @@ import org.nuclearfog.twidda.database.GlobalSettings;
import org.nuclearfog.twidda.fragment.backend.TrendLoader;
import org.nuclearfog.twidda.window.SearchPage;
import static android.os.AsyncTask.Status.FINISHED;
import static android.os.AsyncTask.Status.RUNNING;
import static org.nuclearfog.twidda.window.SearchPage.KEY_SEARCH;
@ -32,7 +33,6 @@ public class TrendListFragment extends Fragment implements OnRefreshListener, On
private RecyclerView list;
private TrendAdapter adapter;
private GlobalSettings settings;
private View root;
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup parent, Bundle param) {
@ -53,13 +53,6 @@ public class TrendListFragment extends Fragment implements OnRefreshListener, On
}
@Override
public void onViewCreated(@NonNull View v, Bundle param) {
super.onViewCreated(v, param);
root = v;
}
@Override
public void onStart() {
super.onStart();
@ -98,9 +91,10 @@ public class TrendListFragment extends Fragment implements OnRefreshListener, On
@Override
public void onSettingsChange() {
if (adapter != null)
if (adapter != null && reload != null) {
adapter.clear();
setColors();
setColors();
}
trendTask = null;
}
@ -120,15 +114,34 @@ public class TrendListFragment extends Fragment implements OnRefreshListener, On
}
public TrendAdapter getAdapter() {
return adapter;
}
public void setRefresh(boolean enable) {
if (enable) {
reload.postDelayed(new Runnable() {
@Override
public void run() {
if (trendTask.getStatus() != FINISHED)
reload.setRefreshing(true);
}
}, 500);
} else {
reload.setRefreshing(false);
}
}
private void load() {
trendTask = new TrendLoader(root);
trendTask = new TrendLoader(this);
trendTask.execute();
}
private void setColors() {
if (reload != null)
reload.setProgressBackgroundColorSchemeColor(settings.getHighlightColor());
reload.setProgressBackgroundColorSchemeColor(settings.getHighlightColor());
adapter.setColor(settings.getFontColor());
}
}

View File

@ -23,6 +23,7 @@ import org.nuclearfog.twidda.fragment.backend.TweetLoader;
import org.nuclearfog.twidda.fragment.backend.TweetLoader.Mode;
import org.nuclearfog.twidda.window.TweetDetail;
import static android.os.AsyncTask.Status.FINISHED;
import static android.os.AsyncTask.Status.RUNNING;
import static org.nuclearfog.twidda.window.TweetDetail.KEY_TWEET_ID;
import static org.nuclearfog.twidda.window.TweetDetail.KEY_TWEET_NAME;
@ -52,7 +53,6 @@ public class TweetListFragment extends Fragment implements OnRefreshListener, On
private SwipeRefreshLayout reload;
private RecyclerView list;
private TweetAdapter adapter;
private View root;
private TweetType mode;
private String search;
@ -88,13 +88,6 @@ public class TweetListFragment extends Fragment implements OnRefreshListener, On
}
@Override
public void onViewCreated(@NonNull View v, Bundle param) {
super.onViewCreated(v, param);
root = v;
}
@Override
public void onStart() {
super.onStart();
@ -144,9 +137,10 @@ public class TweetListFragment extends Fragment implements OnRefreshListener, On
@Override
public void onSettingsChange() {
if (adapter != null)
if (adapter != null && reload != null) {
adapter.clear();
setColors();
setColors();
}
tweetTask = null;
}
@ -166,39 +160,59 @@ public class TweetListFragment extends Fragment implements OnRefreshListener, On
}
public TweetAdapter getAdapter() {
return adapter;
}
public void setRefresh(boolean enable) {
if (enable) {
reload.postDelayed(new Runnable() {
@Override
public void run() {
if (tweetTask.getStatus() != FINISHED)
reload.setRefreshing(true);
}
}, 500);
} else {
reload.setRefreshing(false);
}
}
private void load() {
switch (mode) {
case HOME:
tweetTask = new TweetLoader(root, Mode.TL_HOME);
tweetTask = new TweetLoader(this, Mode.TL_HOME);
tweetTask.execute();
break;
case MENT:
tweetTask = new TweetLoader(root, Mode.TL_MENT);
tweetTask = new TweetLoader(this, Mode.TL_MENT);
tweetTask.execute();
break;
case USER_TWEET:
tweetTask = new TweetLoader(root, Mode.USR_TWEETS);
tweetTask = new TweetLoader(this, Mode.USR_TWEETS);
tweetTask.execute(id);
break;
case USER_FAVOR:
tweetTask = new TweetLoader(root, Mode.USR_FAVORS);
tweetTask = new TweetLoader(this, Mode.USR_FAVORS);
tweetTask.execute(id);
break;
case TWEET_ANSR:
boolean loadAnswer = settings.getAnswerLoad();
if (tweetTask != null || loadAnswer)
tweetTask = new TweetLoader(root, Mode.TWEET_ANS);
tweetTask = new TweetLoader(this, Mode.TWEET_ANS);
else
tweetTask = new TweetLoader(root, Mode.DB_ANS);
tweetTask = new TweetLoader(this, Mode.DB_ANS);
tweetTask.execute(id, search);
break;
case SEARCH:
tweetTask = new TweetLoader(root, Mode.TWEET_SEARCH);
tweetTask = new TweetLoader(this, Mode.TWEET_SEARCH);
tweetTask.execute(search);
break;
}
@ -206,8 +220,7 @@ public class TweetListFragment extends Fragment implements OnRefreshListener, On
private void setColors() {
if (reload != null)
reload.setProgressBackgroundColorSchemeColor(settings.getHighlightColor());
reload.setProgressBackgroundColorSchemeColor(settings.getHighlightColor());
adapter.setColor(settings.getHighlightColor(), settings.getFontColor());
adapter.setImage(settings.getImageLoad());
}

View File

@ -24,6 +24,7 @@ import org.nuclearfog.twidda.fragment.backend.UserLoader;
import org.nuclearfog.twidda.fragment.backend.UserLoader.Mode;
import org.nuclearfog.twidda.window.UserProfile;
import static android.os.AsyncTask.Status.FINISHED;
import static android.os.AsyncTask.Status.RUNNING;
import static org.nuclearfog.twidda.window.UserProfile.KEY_PROFILE_ID;
@ -47,7 +48,6 @@ public class UserListFragment extends Fragment implements OnRefreshListener, OnI
private UserAdapter adapter;
private UserLoader userTask;
private RecyclerView list;
private View root;
private UserType mode;
private String search;
private long id;
@ -84,13 +84,6 @@ public class UserListFragment extends Fragment implements OnRefreshListener, OnI
}
@Override
public void onViewCreated(@NonNull View v, Bundle param) {
super.onViewCreated(v, param);
root = v;
}
@Override
public void onStart() {
super.onStart();
@ -142,26 +135,46 @@ public class UserListFragment extends Fragment implements OnRefreshListener, OnI
}
public UserAdapter getAdapter() {
return adapter;
}
public void setRefresh(boolean enable) {
if (enable) {
reload.postDelayed(new Runnable() {
@Override
public void run() {
if (userTask.getStatus() != FINISHED)
reload.setRefreshing(true);
}
}, 500);
} else {
reload.setRefreshing(false);
}
}
private void load() {
switch (mode) {
case FOLLOWS:
userTask = new UserLoader(root, Mode.FOLLOWS);
userTask = new UserLoader(this, Mode.FOLLOWS);
userTask.execute(id);
break;
case FRIENDS:
userTask = new UserLoader(root, Mode.FRIENDS);
userTask = new UserLoader(this, Mode.FRIENDS);
userTask.execute(id);
break;
case RETWEET:
userTask = new UserLoader(root, Mode.RETWEET);
userTask = new UserLoader(this, Mode.RETWEET);
userTask.execute(id);
break;
case FAVORIT:
userTask = new UserLoader(root, Mode.FAVORIT);
userTask = new UserLoader(this, Mode.FAVORIT);
userTask.execute(id);
break;
case USEARCH:
userTask = new UserLoader(root, Mode.SEARCH);
userTask = new UserLoader(this, Mode.SEARCH);
userTask.execute(search);
break;
}

View File

@ -1,26 +1,21 @@
package org.nuclearfog.twidda.fragment.backend;
import android.os.AsyncTask;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.RecyclerView;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.adapter.MessageAdapter;
import org.nuclearfog.twidda.backend.TwitterEngine;
import org.nuclearfog.twidda.backend.helper.ErrorHandler;
import org.nuclearfog.twidda.backend.items.Message;
import org.nuclearfog.twidda.database.AppDatabase;
import org.nuclearfog.twidda.fragment.MessageListFragment;
import java.lang.ref.WeakReference;
import java.util.List;
import twitter4j.TwitterException;
import static android.os.AsyncTask.Status.FINISHED;
public class MessageLoader extends AsyncTask<Long, Void, List<Message>> {
@ -31,35 +26,26 @@ public class MessageLoader extends AsyncTask<Long, Void, List<Message>> {
}
private Mode mode;
private WeakReference<View> ui;
private WeakReference<MessageListFragment> ui;
private TwitterEngine mTwitter;
private TwitterException err;
private AppDatabase db;
private MessageAdapter adapter;
public MessageLoader(@NonNull View root, Mode mode) {
ui = new WeakReference<>(root);
RecyclerView rv = root.findViewById(R.id.fragment_list);
adapter = (MessageAdapter) rv.getAdapter();
mTwitter = TwitterEngine.getInstance(root.getContext());
db = new AppDatabase(root.getContext());
public MessageLoader(MessageListFragment fragment, Mode mode) {
ui = new WeakReference<>(fragment);
db = new AppDatabase(fragment.getContext());
mTwitter = TwitterEngine.getInstance(fragment.getContext());
adapter = fragment.getAdapter();
this.mode = mode;
}
@Override
protected void onPreExecute() {
if (ui.get() == null)
return;
final SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
reload.postDelayed(new Runnable() {
@Override
public void run() {
if (getStatus() != FINISHED)
reload.setRefreshing(true);
}
}, 500);
if (ui.get() != null)
ui.get().setRefresh(true);
}
@ -107,18 +93,15 @@ public class MessageLoader extends AsyncTask<Long, Void, List<Message>> {
adapter.replaceAll(messages);
if (err != null)
ErrorHandler.printError(ui.get().getContext(), err);
SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
reload.setRefreshing(false);
ui.get().setRefresh(false);
}
}
@Override
protected void onCancelled() {
if (ui.get() != null) {
SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
reload.setRefreshing(false);
}
if (ui.get() != null)
ui.get().setRefresh(false);
}
@ -127,8 +110,7 @@ public class MessageLoader extends AsyncTask<Long, Void, List<Message>> {
if (ui.get() != null) {
if (messages != null)
adapter.replaceAll(messages);
SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
reload.setRefreshing(false);
ui.get().setRefresh(false);
}
}
}

View File

@ -1,31 +1,26 @@
package org.nuclearfog.twidda.fragment.backend;
import android.os.AsyncTask;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.RecyclerView;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.adapter.TrendAdapter;
import org.nuclearfog.twidda.backend.TwitterEngine;
import org.nuclearfog.twidda.backend.helper.ErrorHandler;
import org.nuclearfog.twidda.database.AppDatabase;
import org.nuclearfog.twidda.database.GlobalSettings;
import org.nuclearfog.twidda.fragment.TrendListFragment;
import java.lang.ref.WeakReference;
import java.util.List;
import twitter4j.TwitterException;
import static android.os.AsyncTask.Status.FINISHED;
public class TrendLoader extends AsyncTask<Void, Void, List<String>> {
private WeakReference<View> ui;
private WeakReference<TrendListFragment> ui;
private TwitterException err;
private TwitterEngine mTwitter;
private AppDatabase db;
@ -33,35 +28,26 @@ public class TrendLoader extends AsyncTask<Void, Void, List<String>> {
private int woeId;
public TrendLoader(@NonNull View root) {
ui = new WeakReference<>(root);
mTwitter = TwitterEngine.getInstance(root.getContext());
db = new AppDatabase(root.getContext());
GlobalSettings settings = GlobalSettings.getInstance(root.getContext());
RecyclerView list = root.findViewById(R.id.fragment_list);
adapter = (TrendAdapter) list.getAdapter();
public TrendLoader(@NonNull TrendListFragment fragment) {
ui = new WeakReference<>(fragment);
db = new AppDatabase(fragment.getContext());
mTwitter = TwitterEngine.getInstance(fragment.getContext());
GlobalSettings settings = GlobalSettings.getInstance(fragment.getContext());
woeId = settings.getTrendLocation().getWoeId();
adapter = fragment.getAdapter();
}
@Override
protected void onPreExecute() {
if (ui.get() == null)
return;
final SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
reload.postDelayed(new Runnable() {
@Override
public void run() {
if (getStatus() != FINISHED)
reload.setRefreshing(true);
}
}, 500);
if (ui.get() != null)
ui.get().setRefresh(true);
}
@Override
protected List<String> doInBackground(Void[] v) {
List<String> trends = null;
List<String> trends;
try {
if (adapter.isEmpty()) {
trends = db.getTrends(woeId);
@ -73,12 +59,13 @@ public class TrendLoader extends AsyncTask<Void, Void, List<String>> {
trends = mTwitter.getTrends(woeId);
db.storeTrends(trends, woeId);
}
return trends;
} catch (TwitterException err) {
this.err = err;
} catch (Exception err) {
err.printStackTrace();
}
return trends;
return null;
}
@ -89,18 +76,15 @@ public class TrendLoader extends AsyncTask<Void, Void, List<String>> {
adapter.setData(trends);
if (err != null)
ErrorHandler.printError(ui.get().getContext(), err);
SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
reload.setRefreshing(false);
ui.get().setRefresh(false);
}
}
@Override
protected void onCancelled() {
if (ui.get() != null) {
SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
reload.setRefreshing(false);
}
if (ui.get() != null)
ui.get().setRefresh(false);
}
@ -109,8 +93,7 @@ public class TrendLoader extends AsyncTask<Void, Void, List<String>> {
if (ui.get() != null) {
if (trends != null)
adapter.setData(trends);
SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
reload.setRefreshing(false);
ui.get().setRefresh(false);
}
}
}

View File

@ -1,26 +1,21 @@
package org.nuclearfog.twidda.fragment.backend;
import android.os.AsyncTask;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.RecyclerView;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.adapter.TweetAdapter;
import org.nuclearfog.twidda.backend.TwitterEngine;
import org.nuclearfog.twidda.backend.helper.ErrorHandler;
import org.nuclearfog.twidda.backend.items.Tweet;
import org.nuclearfog.twidda.database.AppDatabase;
import org.nuclearfog.twidda.fragment.TweetListFragment;
import java.lang.ref.WeakReference;
import java.util.List;
import twitter4j.TwitterException;
import static android.os.AsyncTask.Status.FINISHED;
public class TweetLoader extends AsyncTask<Object, Void, List<Tweet>> {
@ -35,35 +30,27 @@ public class TweetLoader extends AsyncTask<Object, Void, List<Tweet>> {
}
private Mode mode;
private WeakReference<View> ui;
private WeakReference<TweetListFragment> ui;
private TweetAdapter adapter;
private TwitterEngine mTwitter;
private TwitterException err;
private AppDatabase db;
public TweetLoader(@NonNull View root, Mode mode) {
ui = new WeakReference<>(root);
mTwitter = TwitterEngine.getInstance(root.getContext());
RecyclerView list = root.findViewById(R.id.fragment_list);
adapter = (TweetAdapter) list.getAdapter();
db = new AppDatabase(root.getContext());
public TweetLoader(TweetListFragment fragment, Mode mode) {
ui = new WeakReference<>(fragment);
db = new AppDatabase(fragment.getContext());
mTwitter = TwitterEngine.getInstance(fragment.getContext());
adapter = fragment.getAdapter();
this.mode = mode;
}
@Override
protected void onPreExecute() {
if (ui.get() == null)
return;
final SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
reload.postDelayed(new Runnable() {
@Override
public void run() {
if (getStatus() != FINISHED)
reload.setRefreshing(true);
}
}, 500);
if (ui.get() != null) {
ui.get().setRefresh(true);
}
}
@ -177,8 +164,7 @@ public class TweetLoader extends AsyncTask<Object, Void, List<Tweet>> {
adapter.addFirst(tweets);
if (err != null)
ErrorHandler.printError(ui.get().getContext(), err);
SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
reload.setRefreshing(false);
ui.get().setRefresh(false);
}
}
@ -186,8 +172,7 @@ public class TweetLoader extends AsyncTask<Object, Void, List<Tweet>> {
@Override
protected void onCancelled() {
if (ui.get() != null) {
SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
reload.setRefreshing(false);
ui.get().setRefresh(false);
}
}
@ -197,8 +182,7 @@ public class TweetLoader extends AsyncTask<Object, Void, List<Tweet>> {
if (ui.get() != null) {
if (tweets != null)
adapter.addFirst(tweets);
SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
reload.setRefreshing(false);
ui.get().setRefresh(false);
}
}
}

View File

@ -1,18 +1,14 @@
package org.nuclearfog.twidda.fragment.backend;
import android.os.AsyncTask;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.RecyclerView;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.adapter.UserAdapter;
import org.nuclearfog.twidda.backend.TwitterEngine;
import org.nuclearfog.twidda.backend.helper.ErrorHandler;
import org.nuclearfog.twidda.backend.items.TwitterUser;
import org.nuclearfog.twidda.fragment.UserListFragment;
import java.lang.ref.WeakReference;
import java.util.LinkedList;
@ -31,17 +27,16 @@ public class UserLoader extends AsyncTask<Object, Void, List<TwitterUser>> {
}
private Mode mode;
private WeakReference<View> ui;
private WeakReference<UserListFragment> ui;
private TwitterEngine mTwitter;
private TwitterException err;
private UserAdapter adapter;
public UserLoader(@NonNull View root, Mode mode) {
ui = new WeakReference<>(root);
mTwitter = TwitterEngine.getInstance(root.getContext());
RecyclerView list = root.findViewById(R.id.fragment_list);
adapter = (UserAdapter) list.getAdapter();
public UserLoader(UserListFragment fragment, Mode mode) {
ui = new WeakReference<>(fragment);
mTwitter = TwitterEngine.getInstance(fragment.getContext());
adapter = fragment.getAdapter();
this.mode = mode;
}
@ -49,49 +44,35 @@ public class UserLoader extends AsyncTask<Object, Void, List<TwitterUser>> {
@Override
protected void onPreExecute() {
if (ui.get() == null)
return;
final SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
reload.postDelayed(new Runnable() {
@Override
public void run() {
if (getStatus() != Status.FINISHED)
reload.setRefreshing(true);
}
}, 500);
ui.get().setRefresh(true);
}
@Override
protected List<TwitterUser> doInBackground(Object[] param) {
List<TwitterUser> users = null;
try {
switch (mode) {
case FOLLOWS:
users = mTwitter.getFollower((long) param[0]);
break;
return mTwitter.getFollower((long) param[0]);
case FRIENDS:
users = mTwitter.getFollowing((long) param[0]);
break;
return mTwitter.getFollowing((long) param[0]);
case RETWEET:
users = mTwitter.getRetweeter((long) param[0]);
break;
return mTwitter.getRetweeter((long) param[0]);
case FAVORIT:
users = new LinkedList<>(); // TODO not jet implemented in Twitter4J
break;
return new LinkedList<>(); // TODO not jet implemented in Twitter4J
case SEARCH:
users = mTwitter.searchUsers((String) param[0]);
break;
return mTwitter.searchUsers((String) param[0]);
}
} catch (TwitterException err) {
this.err = err;
} catch (Exception err) {
err.printStackTrace();
}
return users;
return null;
}
@ -102,18 +83,15 @@ public class UserLoader extends AsyncTask<Object, Void, List<TwitterUser>> {
adapter.replaceAll(users);
else if (err != null)
ErrorHandler.printError(ui.get().getContext(), err);
SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
reload.setRefreshing(false);
ui.get().setRefresh(false);
}
}
@Override
protected void onCancelled() {
if (ui.get() != null) {
SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
reload.setRefreshing(false);
}
if (ui.get() != null)
ui.get().setRefresh(false);
}
@ -122,8 +100,7 @@ public class UserLoader extends AsyncTask<Object, Void, List<TwitterUser>> {
if (ui.get() != null) {
if (users != null)
adapter.replaceAll(users);
SwipeRefreshLayout reload = ui.get().findViewById(R.id.fragment_reload);
reload.setRefreshing(false);
ui.get().setRefresh(false);
}
}
}

View File

@ -309,6 +309,17 @@ public class AppSettings extends AppCompatActivity implements OnClickListener,
}
public ArrayAdapter<TrendLocation> getAdapter() {
return adapter;
}
public void setWoeIdSelection() {
int position = adapter.getPosition(settings.getTrendLocation());
woeId.setSelection(position);
}
private void setColor(int preColor) {
Dialog d = ColorPickerDialogBuilder.with(this)
.showAlphaSlider(false).initialColor(preColor)

View File

@ -64,6 +64,8 @@ public class MediaViewer extends AppCompatActivity implements OnImageClickListen
private ImageLoader imageAsync;
private ProgressBar video_progress;
private MediaController videoController;
private ImageAdapter adapter;
private ProgressBar progress;
private VideoView videoView;
private ZoomView zoomImage;
private MediaType type;
@ -80,10 +82,12 @@ public class MediaViewer extends AppCompatActivity implements OnImageClickListen
RecyclerView imageList = findViewById(R.id.image_list);
View imageWindow = findViewById(R.id.image_window);
View videoWindow = findViewById(R.id.video_window);
progress = findViewById(R.id.image_load);
video_progress = findViewById(R.id.video_load);
zoomImage = findViewById(R.id.image_full);
videoView = findViewById(R.id.video_view);
videoController = new MediaController(this);
adapter = new ImageAdapter(this);
Bundle param = getIntent().getExtras();
if (param != null && param.containsKey(KEY_MEDIA_LINK) && param.containsKey(KEY_MEDIA_TYPE)) {
@ -99,7 +103,7 @@ public class MediaViewer extends AppCompatActivity implements OnImageClickListen
case ANGIF_STORAGE:
imageWindow.setVisibility(VISIBLE);
imageList.setLayoutManager(new LinearLayoutManager(this, HORIZONTAL, false));
imageList.setAdapter(new ImageAdapter(this));
imageList.setAdapter(adapter);
Display d = getWindowManager().getDefaultDisplay();
Point size = new Point();
d.getSize(size);
@ -226,7 +230,17 @@ public class MediaViewer extends AppCompatActivity implements OnImageClickListen
}
public void setImage(@NonNull Bitmap image) {
public ImageAdapter getAdapter() {
return adapter;
}
public void disableProgressbar() {
progress.setVisibility(View.INVISIBLE);
}
private void setImage(@NonNull Bitmap image) {
float ratio = image.getWidth() / (float) width;
int destHeight = (int) (image.getHeight() / ratio);
image = Bitmap.createScaledBitmap(image, width, destHeight, false);